数据结构与算法二叉树

一、树的示意图

在这里插入图片描述1) 节点
2) 根节点
3) 父节点
4) 子节点
5) 叶子节点 (没有子节点的节点)
6) 节点的权(节点值)
7) 路径(从root节点找到该节点的路线) 8) 层
9) 子树
10) 树的高度(最大层数)
11) 森林 :多颗子树构成森林

二、二叉树的概念

  1. 树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。

  2. 二叉树的子节点分为左节点和右节点

  3. 示意图
    在这里插入图片描述

  4. 如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树。

    5.如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二 层的叶子节点在右边连续,我们称为完全二叉树
    在这里插入图片描述

三、二叉树遍历(Java实现)

来自leetcode
二叉树的遍历分为两个方面,即深度优先广度优先。深度优先遍历包含前序遍历、中序遍历、和后序遍历;广度优先遍历包含层序遍历。
代码实现:

递归实现(以前序遍历为例子)
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
       List<Integer> result = new ArrayList<>();
       if (root!=null){
       result.add(root.val);
       result.addAll(preorderTraversal(root.left));
       result.addAll(preorderTraversal(root.right));
       }return new ArrayList<>();
    }
}
发布了79 篇原创文章 · 获赞 44 · 访问量 2022

猜你喜欢

转载自blog.csdn.net/wy19961103/article/details/105182025