前序遍历:打印 - 左 - 右中序遍历:左 - 打印 - 右后序遍历:左 - 右 - 打印广度优先遍历 -- 队列先进先出深度优先遍历 -- 栈 先进后出
二叉树的前序遍历VS中序遍历VS后序遍历
/**题目要求的是中序遍历,那就按照 左-打印-右这种顺序遍历树就可以了,递归函数实现终止条件:当前节点为空时函数内:递归的调用左节点,打印当前节点,再递归调用右节点*/const inorderTraversal = (root) => { const res = []; const inorder = (root) => { if (root == null) { return; } /公共的部分,只需依据题目所需要的遍历,调整顺序即可 inorder(root.left); res.push(root.val); inorder(root.right); }; inorder(root); return res;};
二叉树层序遍历
var levelOrderBottom = function(root) { const res = []; const levelOrderII = (root,dep) => { if (root == null) { return } if (!res[dep]) { res[dep] = [] } levelOrderII(root.left, dep+1); levelOrderII(root.right,dep+1) res[dep].push(root.val) } levelOrderII(root,0); return res //层序遍历 // return res.reverse() // 层序遍历二};// 写在后面// 从左到右,都遍历后,放入某一层的数组中
二叉树的右视图
var rightSideView = function(root) { const res = [] const rightOrder = (root,dep) => { if (root == null) { return } if (res.length == dep){ res.push(root.val) } rightOrder(root.right, dep+1) rightOrder(root.left, dep+1) } rightOrder(root,0); return res;};// 左右视图,和层序相关,不过是每一层都放一个节点