1. 前序遍历:打印 - -
  2. 中序遍历:左 - 打印 -
  3. 后序遍历:左 - - 打印
  4. 广度优先遍历 -- 队列先进先出
  5. 深度优先遍历 -- 先进后出

二叉树的前序遍历VS中序遍历VS后序遍历

  1. /**
  2. 题目要求的是中序遍历,那就按照 左-打印-右这种顺序遍历树就可以了,递归函数实现
  3. 终止条件:当前节点为空时
  4. 函数内:递归的调用左节点,打印当前节点,再递归调用右节点
  5. */
  6. const inorderTraversal = (root) => {
  7. const res = [];
  8. const inorder = (root) => {
  9. if (root == null) {
  10. return;
  11. }
  12. /公共的部分,只需依据题目所需要的遍历,调整顺序即可
  13. inorder(root.left);
  14. res.push(root.val);
  15. inorder(root.right);
  16. };
  17. inorder(root);
  18. return res;
  19. };

二叉树层序遍历

  1. var levelOrderBottom = function(root) {
  2. const res = [];
  3. const levelOrderII = (root,dep) => {
  4. if (root == null) {
  5. return
  6. }
  7. if (!res[dep]) {
  8. res[dep] = []
  9. }
  10. levelOrderII(root.left, dep+1);
  11. levelOrderII(root.right,dep+1)
  12. res[dep].push(root.val)
  13. }
  14. levelOrderII(root,0);
  15. return res //层序遍历
  16. // return res.reverse() // 层序遍历二
  17. };
  18. // 写在后面
  19. // 从左到右,都遍历后,放入某一层的数组中

二叉树的右视图

  1. var rightSideView = function(root) {
  2. const res = []
  3. const rightOrder = (root,dep) => {
  4. if (root == null) {
  5. return
  6. }
  7. if (res.length == dep){
  8. res.push(root.val)
  9. }
  10. rightOrder(root.right, dep+1)
  11. rightOrder(root.left, dep+1)
  12. }
  13. rightOrder(root,0);
  14. return res;
  15. };
  16. // 左右视图,和层序相关,不过是每一层都放一个节点