十五:查找二叉树中所有路径

Posted JavaScript技术分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十五:查找二叉树中所有路径相关的知识,希望对你有一定的参考价值。

思路:

  • 时间复杂度:O(n²)

  • 空间复杂度:O(n²)

  • 定义一个paths存储所有路径

  • 定义一个递归函数next,接收三个参数(二叉树root,累加path,存储paths的集合)

  • 如果root不存在直接返回,否则path累加当前root的节点值

  • 如果当前节点是叶子节点,将累加后的path存储在paths中

  • 不是叶子节点,分别递归左右子树,传入左右子树,累加path,集合

算法如下

/** * 寻找二叉树所有路径 * @param {*} binaryTree 二叉树 */function findBinaryTreeAllPath(binaryTree) { // 存储所有路径 let paths = [] /** * 递归 * @param {*} root 二叉树 * @param {*} path 路径 * @param {*} paths 存储的路径 */ function next(root, path, paths) { // 如果二叉树不存在,返回 if (!root) return path += root.value // 叶子节点 存储路径 if (!root.left && !root.right) paths.push(path) else { path += '=>' // 遍历左子树 next(root.left, path, paths) // 遍历右子数 next(root.right, path, paths) } } // 从根节点开始 next(binaryTree, '', paths) return paths}


以上是关于十五:查找二叉树中所有路径的主要内容,如果未能解决你的问题,请参考以下文章

第十四周 项目2--二叉树排序树中查找的路径

第六十五课 二叉树中属性操作的实现

python3实现在二叉树中找出和为某一值的所有路径

输出二叉树中所有从根结点到叶子结点的路径

输出二叉树中所有从根结点到叶子结点的路径

二叉树中所有的路径(从根节点到叶子结点)