• 144. 二叉树的前序遍历


    二叉树的深度优先遍历

    今天我们来说二叉树的深度优先遍历 , 这次用简单但有点难理解的方式递归来实现 , 对应LeetCode 144,145

    二叉树的前序遍历

    描述 :

    给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

    题目 :

    LeetCode 二叉树的前序遍历 :

    144. 二叉树的前序遍历

    分析 :

    我们先选一个最小的子树:

    先判断5节点不是null之后把5添加到集合里 , 再把5的左节点递归 , 判断7节点不是null把7添加到集合中 再把7节点的左节点递归 判断是null返回 再把7的右节点递归判断为null返回 , 之后把5的右节点递归 判断之后把8添加到集合中 依次类推......
     

    解析 :

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. public List preorderTraversal(TreeNode root) {
    18. List list = new ArrayList<>();
    19. nodeVal(root,list);
    20. return list;
    21. }
    22. public void nodeVal(TreeNode node,List list){
    23. if(node == null){
    24. return;
    25. }
    26. list.add(node.val);
    27. nodeVal(node.left,list);
    28. nodeVal(node.right,list);
    29. }
    30. }

    二叉树的中序遍历

    描述 :

    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

    题目 :

    LeetCode 94.二叉树的中序遍历 :

    94. 二叉树的中序遍历

    分析 :

    解析 :

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. public List inorderTraversal(TreeNode root) {
    18. List list = new ArrayList<>();
    19. nodeValue(root,list);
    20. return list;
    21. }
    22. public void nodeValue(TreeNode root,List list){
    23. if(root == null){
    24. return;
    25. }
    26. nodeValue(root.left,list);
    27. list.add(root.val);
    28. nodeValue(root.right,list);
    29. }
    30. }

    二叉树的后序遍历

    描述 :

    给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

    题目 :

    LeetCode 145.二叉树的后序遍历 :

    145. 二叉树的后序遍历

    分析 :

    后序遍历伙伴们自己画一下 , 理解理解递归思想.......

    解析 :

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. public List postorderTraversal(TreeNode root) {
    18. List list = new ArrayList<>();
    19. nodeValue(root,list);
    20. return list;
    21. }
    22. public void nodeValue(TreeNode root,List list){
    23. if(root == null){
    24. return;
    25. }
    26. nodeValue(root.left,list);
    27. nodeValue(root.right,list);
    28. list.add(root.val);
    29. }
    30. }

    这期就到这里 , 下期见!

  • 相关阅读:
    C++:继承、模板、CRTP:谈谈C++多态设计模式
    Intel汇编语言程序设计(第7版)第六章编程学习过程中写的小例子
    Linux信号量(简易版)
    API 网关 Apache APISIX 3.0 版本正式发布
    淘宝账号如何快速提升到更高等级
    linux ubuntu22.04 部分实用的 远程管理 命令的说明与使用
    DOM property 和 attribute 的区别
    RabbitMQ系列【3】安装RabbitMQ
    一文带你解决Ajax!
    JavaScript垃圾回收机制解析
  • 原文地址:https://blog.csdn.net/sytdsqzr/article/details/134294724