LeetCode 二叉树的 前序遍历 & 中序遍历 & 后序遍历


二叉树的前序遍历

https://leetcode.cn/problems/binary-tree-preorder-traversal/

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

示例 1:

输入:root = [1,null,2,3]
输出:[1,2,3]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

输入:root = [1,2]
输出:[1,2]

示例 5:

输入:root = [1,null,2]
输出:[1,2]

提示:

树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100

递归

在这里插入图片描述

扫描二维码关注公众号,回复: 14244765 查看本文章
  • 自己调用自己
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    
    public List<Integer> preorderTraversal(TreeNode root) {
    
    


        List<Integer> list=new ArrayList<>();
        if(root!=null){
    
    
            fun(root,list);
        }


return list;

    }

        public static void fun(TreeNode root,List<Integer> list){
    
    
        if(root!=null){
    
    
            list.add(root.val);
            if(root.left!=null)
                fun(root.left,list);
            if(root.right!=null)
                fun(root.right,list);

        }




    }
}

二叉树的中序遍历

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


递归

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    
    public List<Integer> inorderTraversal(TreeNode root) {
    
    

        List<Integer> list=new ArrayList<>();
        fun(root,list);
        return list;

    }

    public static void fun(TreeNode root,List<Integer> list) {
    
    
        if (root != null) {
    
    
            if (root.left != null)
                fun(root.left, list);

            list.add(root.val);

            if (root.right != null)
                fun(root.right, list);

        }
    }


}

二叉树的后序遍历

递归

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    
    public List<Integer> postorderTraversal(TreeNode root) {
    
    
        List<Integer> list=new ArrayList<>();
        fun(root,list);
        return list;
    }
        public static void fun(TreeNode root,List<Integer> list) {
    
    
        if (root != null) {
    
    
            if (root.left != null)
                fun(root.left, list);



            if (root.right != null)
                fun(root.right, list);
            list.add(root.val);

        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_44627608/article/details/124732912