一、树的示意图
1) 节点
2) 根节点
3) 父节点
4) 子节点
5) 叶子节点 (没有子节点的节点)
6) 节点的权(节点值)
7) 路径(从root节点找到该节点的路线) 8) 层
9) 子树
10) 树的高度(最大层数)
11) 森林 :多颗子树构成森林
二、二叉树的概念
-
树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。
-
二叉树的子节点分为左节点和右节点
-
示意图
-
如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 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<>();
}
}