代码随想录训练营第三十五期|第天14|二叉树part01|理论基础● 递归遍历 ● 迭代遍历● 统一迭代

java 复制代码
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;
    }
}

144. 二叉树的前序遍历 - 力扣(LeetCode)

java 复制代码
/**
 * 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> res = new ArrayList<>();
        if (root == null) return res;
        traversal(res, root);
        return res;
    }

    private void traversal(List<Integer> res, TreeNode root) {
        if (root == null) return;
        res.add(root.val);
        traversal(res, root.left);
        traversal(res, root.right);
    }
}

145. 二叉树的后序遍历 - 力扣(LeetCode)

java 复制代码
/**
 * 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> res = new ArrayList<>();
        if (root == null) return res;
        traversal(res, root);
        return res;
    }

    private void traversal(List<Integer> res, TreeNode root) {
        if (root == null) return;
        traversal(res, root.left);
        traversal(res, root.right);
        res.add(root.val);
    }
}

94. 二叉树的中序遍历 - 力扣(LeetCode)

java 复制代码
/**
 * 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> res = new ArrayList<>();
        if (root == null) return res;
        traversal(res, root);
        return res;
    }

    private void traversal(List<Integer> res, TreeNode root) {
        if (root == null) return;
        traversal(res, root.left);
        res.add(root.val);
        traversal(res, root.right);
    }
}
相关推荐
xqlily15 分钟前
Prover9/Mace4 的形式化语言简介
人工智能·算法
资深web全栈开发36 分钟前
二分搜索中 `right = mid` 而非 `right = mid + 1` 的解释
算法·rust·二分搜索
狮子也疯狂2 小时前
基于Django实现的智慧校园考试系统-自动组卷算法实现
python·算法·django
爱coding的橙子2 小时前
每日算法刷题Day84:11.11:leetcode 动态规划9道题,用时2h
算法·leetcode·动态规划
飞鱼&2 小时前
java数据结构
数据结构·二叉树·散列表·红黑树
shenghaide_jiahu2 小时前
字符串匹配和回文串类题目
学习·算法·动态规划
有意义3 小时前
为什么说数组是 JavaScript 开发者必须精通的数据结构?
前端·数据结构·算法
努力努力再努力wz3 小时前
【Linux进阶系列】:线程(下)
linux·运维·服务器·c语言·数据结构·c++·算法
rit84324993 小时前
瑞利信道下PSK水声通信系统均衡技术
算法
ValhallaCoder3 小时前
Day33-动态规划
数据结构·python·算法·动态规划