算法学习day14二叉树part01-94、144、145

发布时间 2023-07-11 21:57:19作者: 坤坤无敌
package SecondBrush.Tree;

import java.util.ArrayList;
import java.util.List;

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

public class BinaryTreeInorderTraversal_94 {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        inorder(root, res);
        return res;
    }

    public void inorder(TreeNode root, List<Integer> result){
        if (root == null){
            return;
        }
        inorder(root.left,result);
        result.add(root.val);
        inorder(root.right,result);
    }

}
package SecondBrush.Tree;

import java.util.ArrayList;
import java.util.List;

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

public class BinaryTreePostorderTraversal_145 {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        postorder(root, res);
        return res;
    }

    public void postorder(TreeNode root,List<Integer> result){
        if (root == null){
            return;
        }
        postorder(root.left,result);
        postorder(root.right,result);
        result.add(root.val);

    }

}
package SecondBrush.Tree;
/**
 * 144. 二叉树的前序遍历
 * 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
 * */

import java.util.ArrayList;
import java.util.List;

/**
 * 递归法:
 * 前序遍历,最终输出至一个list里面
 * 所以先将 中节点加进去,然后递归root.left,root.right
 * */

public class BinaryTreePreorderTraversal_144 {
    public List<Integer> preorderTraversal(TreeNode root){
        List<Integer> result = new ArrayList<Integer>();
        preorder(root,result);
        return result;
    }

    public void preorder(TreeNode root, List<Integer> result){
        if (root == null){
            return;
        }
        result.add(root.val);
        preorder(root.left,result);
        preorder(root.right,result);
    }

}