备战字节1——二叉遍历(递归)

二战字节,二叉树是字节面试必考算法,学不会,能进字节我吃shit

 

1.定义部分

//二叉树遍历写法
//前序遍历:TreeNode类,定义三个参数,同时构造函数;
//List<Integer> preOrderReverse类,新建对象,对象引用函数,返回返回值;

//preOrder方法,定义root和result(返回值), 设置停止机制,写逻辑函数
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class TreeNode{//三个参数
int val;
TreeNode left;
TreeNode right;
public TreeNode (int val, TreeNode left, TreeNode right){//构造函数
this.val = val;
this.left = left;
this.right = right;
}

public TreeNode (int val){
this.val = val;
}

public TreeNode(){

}

2.前序遍历三要素:
1.确定递归函数的参数和返回值

2.确定终止条件
3.确定单层递归的逻辑
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList();//对象
        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);
 
       }
    }


后序:
 
        postOrder(root.left, result);
        postOrder(root.right,result);
        
        result.add(root.val);
 
posted @ 2022-01-16 23:03  曲海鑫  阅读(47)  评论(0)    收藏  举报