二叉树遍历框架
421
2023.04.13
发布于 未知归属地

二叉树遍历框架。

东哥带你刷二叉树(纲领篇)
一套拳法👊刷掉n个遍历树的问题

题解

  1. 144. 二叉树的前序遍历
  2. 94. 二叉树的中序遍历
  3. 145. 二叉树的后序遍历
  4. 589. N 叉树的前序遍历
  5. 590. N 叉树的后序遍历

延伸扩展

中序遍历
二叉搜索树的中序遍历是升序的。

  1. 98. 验证二叉搜索树
  2. 99. 恢复二叉搜索树
  3. 108. 将有序数组转换为二叉搜索树
  4. 109. 有序链表转换二叉搜索树
  5. 501. 二叉搜索树中的众数
  6. 1382. 将二叉搜索树变平衡
  7. 173. 二叉搜索树迭代器
  8. 230. 二叉搜索树中第K小的元素
  9. 530. 二叉搜索树的最小绝对差
  10. 671. 二叉树中第二小的节点
  11. 783. 二叉搜索树节点最小距离
  12. 897. 递增顺序搜索树
  13. 653. 两数之和 IV - 输入 BST
  14. 1305. 两棵二叉搜索树中的所有元素

后序遍历

  1. 104. 二叉树的最大深度
  2. 110. 平衡二叉树
  3. 114. 二叉树展开为链表
  4. 124. 二叉树中的最大路径和
  5. 508. 出现次数最多的子树元素和
  6. 543. 二叉树的直径
  7. 563. 二叉树的坡度
  8. 687. 最长同值路径
  9. 814. 二叉树剪枝
  10. 1325. 删除给定值的叶子节点
  11. 979. 在二叉树中分配硬币
  12. 865. 具有所有最深节点的最小子树
  13. 1339. 分裂二叉树的最大乘积
  14. 1372. 二叉树中的最长交错路径
  15. 1373. 二叉搜索子树的最大键值和

前后序遍历

  1. 112. 路径总和
  2. 113. 路径总和 II
  3. 129. 求根节点到叶节点数字之和
  4. 235. 二叉搜索树的最近公共祖先
  5. 236. 二叉树的最近公共祖先
  6. 257. 二叉树的所有路径
  7. 513. 找树左下角的值
  8. 988. 从叶结点开始的最小字符串
  9. 938. 二叉搜索树的范围和
  10. 1080. 根到叶路径上的不足节点

前序遍历

  1. 100. 相同的树
  2. 572. 另一棵树的子树
  3. 101. 对称二叉树
  4. 104. 二叉树的最大深度
  5. 111. 二叉树的最小深度
  6. 559. N 叉树的最大深度
  7. 404. 左叶子之和
  8. 1022. 从根到叶的二进制数之和
  9. 515. 在每个树行中找最大值
  10. 623. 在二叉树中增加一行
  11. 662. 二叉树最大宽度
  12. 1261. 在受污染的二叉树中查找元素
  13. 226. 翻转二叉树
  14. 951. 翻转等价二叉树
  15. 700. 二叉搜索树中的搜索
  16. 971. 翻转二叉树以匹配先序遍历
  17. 1026. 节点与其祖先之间的最大差值
  18. 1110. 删点成林
  19. 1302. 层数最深叶子节点的和
  20. 617. 合并二叉树
  21. 669. 修剪二叉搜索树
  22. 1379. 找出克隆二叉树中的相同节点
  23. 987. 二叉树的垂序遍历
  24. 965. 单值二叉树

反序中序遍历

  1. 199. 二叉树的右视图
  2. 538. 把二叉搜索树转换为累加树
  3. 1038. 从二叉搜索树到更大和树

构造二叉树

  1. 105. 从前序与中序遍历序列构造二叉树
  2. 106. 从中序与后序遍历序列构造二叉树
  3. 654. 最大二叉树
  4. 889. 根据前序和后序遍历构造二叉树
  5. 1008. 前序遍历构造二叉搜索树

1.「遍历」的思维模式

    // 记录结果
    private List<Integer> res = new LinkedList<>();

    /**
     * 二叉树遍历框架,「遍历」的思维模式。
     * 非线性递归遍历结构
     */
    private void traverse(TreeNode root) {
        if (root == null) {
            return;
        }
        // 前序位置,添加结果
        res.add(root.val);
        traverse(root.left);
        // // 中序位置,添加结果
        // res.add(root.val);
        traverse(root.right);
        // // 后序位置,添加结果
        // res.add(root.val);
    }
评论 (0)