首页 > 其他分享 >代码随想录 | 二叉树的遍历

代码随想录 | 二叉树的遍历

时间:2022-10-09 23:57:25浏览次数:78  
标签:node 遍历 TreeNode val 随想录 right que 二叉树 left

二叉树的递归遍历

递归的三要素

1.递归函数的参数和返回值

2.递归出口

3.单层递归的逻辑

144. 二叉树的前序遍历

给你二叉树的根节点 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> preorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        preoder(root,result);
        return result;
    }
    public void preoder(TreeNode node,List<Integer> result){
        if (node==null){
            return;
        }
        result.add(node.val);//前序遍历:中、左、右
        preoder(node.left,result);
        preoder(node.right,result);
    }
}



94. 二叉树的中序遍历

给定一个二叉树的根节点 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> result = new ArrayList();
        inorder(root,result);
        return result;
    }
    public void inorder(TreeNode node, List<Integer> result){
        if(node==null){
            return;
        }
        inorder(node.left,result);//中序遍历:左、中、右
        result.add(node.val);
        inorder(node.right,result);
    }
}



145. 二叉树的后序遍历

给你一棵二叉树的根节点 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> postorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList();
        postorder(root,result);
        return result;
    }
    public void postorder(TreeNode node,List<Integer> result){
        if(node==null){
            return;
        }
        postorder(node.left,result);//后序遍历:左、右、中
        postorder(node.right,result);
        result.add(node.val);
    }
}




二叉树的迭代遍历

用栈操作,递归也是用栈实现的嘛

标签:node,遍历,TreeNode,val,随想录,right,que,二叉树,left
From: https://www.cnblogs.com/xiannveryao/p/16772098.html

相关文章