
在讲二叉树之前,我们先需要简单了解一下树的相关知识。
树的定义如下:树(Tree)是n个节点的有限集。n=0时称为空树。在任意一颗非空树中:

注意事项:
树的节点包含一个数据元素及若干个指向其子树的分支。
在将树的分类之前先介绍度概念:
分类:
关系如下:
树有多种表示方法。
树这种结构除了根节点外,其余每个节点,不一定有孩子节点,但是一定有且仅有一个双亲节点。
假设一段连续空间存储树的节点,将根结点的parent值为-1,其余节点的parent存储双亲节点的下标。
public class Tree{ public TreeNode [] elem;//节点数组 public int r;//根的位置 public int n;//节点个数 static class TreeNode{ int data;//节点数据 int parent;//双亲位置 } } 使用多重链表,每个节点有多个指针域,其中每个指针指向一颗子树的根节点。
由于树中每个节点的度是不一样的,所以有两种方式。
public class Tree{ public TreeNode []elem;//节点数组 int r;//跟的位置 int n;//节点数 static class TreeNode{ int child; TreeNode next; } } 任意一棵树,它的节点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。
因此我们使用两个指针,分别指向该节点的第一个孩子和此节点的右兄弟。
class TreeNode { int value; // 树中存储的数据 Node firstChild; // 第一个孩子引用 Node nextBrother; // 下一个兄弟引用 } 关于树的重要概念总结如下: