写点什么

代码随想录 Day14 - 二叉树(一)

作者:jjn0703
  • 2023-07-13
    江苏
  • 本文字数:1541 字

    阅读完需:约 5 分钟

相关概念

满二叉树

一棵深度为 k 且有 个结点的二叉树称为满二叉树。

节点数 = 2^k - 1

完全二叉树

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。

每一层从左到右都不缺失节点,完全二叉树一定是满二叉树。

二叉搜索树

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。

平衡二叉搜索树

平衡二叉搜索树(英语:Balanced Binary Tree)是一种结构平衡的二叉搜索树,即叶节点高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。

作业题

递归法遍历二叉树

144. 二叉树的前序遍历

/** * 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<>();        dfs(root, result);        return result;    }        private void dfs(TreeNode node, List<Integer> result) {        if (node == null) {            return;        }         result.add(node.val);        dfs(node.left, result);        dfs(node.right, result);    }}
复制代码

94. 二叉树的中序遍历

/** * 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<>();        dfs(root, result);        return result;    }        private void dfs(TreeNode node, List<Integer> result) {        if (node == null) {            return;        }        dfs(node.left, result);        result.add(node.val);        dfs(node.right, result);    }}
复制代码

145. 二叉树的后序遍历

/** * 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<>();        dfs(root, result);        return result;    }        private void dfs(TreeNode node, List<Integer> result) {        if (node == null) {            return;        }        dfs(node.left, result);        dfs(node.right, result);        result.add(node.val);    }}
复制代码

迭代法遍历二叉树

后续再补充。。。

144. 二叉树的前序遍历


94. 二叉树的中序遍历


145. 二叉树的后序遍历


发布于: 刚刚阅读数: 4
用户头像

jjn0703

关注

Java工程师/终身学习者 2018-03-26 加入

USTC硕士/健身健美爱好者/Java工程师.

评论

发布
暂无评论
代码随想录 Day14 - 二叉树(一)_jjn0703_InfoQ写作社区