题目描述
给定一个二叉树,返回它的 前序 遍历。
1 | 输入: [1,null,2,3] |
代码实现
递归
1 | /** |
栈 + 迭代
在前序后序和中序遍历中,这个的迭代方法应该是最好写的了。
这里注意要运用栈的原理
1 | /** |
给定一个二叉树,返回它的 前序 遍历。
1 | 输入: [1,null,2,3] |
1 | /** |
在前序后序和中序遍历中,这个的迭代方法应该是最好写的了。
这里注意要运用栈的原理
1 | /** |
根据一棵树的前序遍历与中序遍历构造二叉树。
注意: 你可以假设树中没有重复的元素。
例如,给出
1 | 前序遍历 preorder = [3,9,20,15,7] |
返回如下的二叉树:
1 | 3 |
这是参考的评论区的一个解法,感觉十分易懂。这里的判断条件就是 l > r
是否成立。
1 | /** |
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:给定二叉树: [3,9,20,null,null,15,7]
1 | 3 |
返回其层次遍历结果:
1 | [ |
原理就是 BFS 一层一层地遍历,借助队列实现。
这个题的一个小技巧就是 let len = queue.length;
这行代码锁住了当前 for
循环的次数
1 | /** |
根据 result 的长度和 depth 比较,如果 result.length === depth
,就创建一个空的数组。
这里的 root.left && dfs(root.left, depth+1);
和 root.right && dfs(root.right, depth+1);
利用了 JavaScript
中 &&
运算符的原理。
1 | /** |