天天看点

从零开始学算法---二叉树

什么是树? 

树是n(n>=0)个结点的有限集。n=0时称为空树,在任意一棵非空树中,有且仅有一个特定的称为根(root)的结点, 当n>1时,其余结点可分为m个互不相交的有限集。 下图中第一张图就不是树, 因为d和e相交

从零开始学算法---二叉树

树的存储结构?

树的存储结构一般有4种,

1)双亲表示法,就是在每个节点中标示出它的父节点

从零开始学算法---二叉树

 2)孩子表示法,每个节点携带指针位指向自己的孩子

从零开始学算法---二叉树

 这种方法中,每个节点除了数据域外,还要额外携带m个指针位(m为树的度)

3)双亲孩子表示法

从零开始学算法---二叉树

 4),孩子兄弟表示法

从零开始学算法---二叉树

 二叉树?

度<=2的树称为二叉树

二叉树的存储结构?

1)顺序存储

从零开始学算法---二叉树

 2, 链式存储(使用孩子表示法)

从零开始学算法---二叉树

 二叉树的遍历?

1)前序遍历(DLR), 规则是:若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树

从零开始学算法---二叉树

 代码实现:

测试代码 

输出结果:

从零开始学算法---二叉树

 2)相对于前序遍历(DLR)来说, 中序遍历(LDR)就是先访问左子树,再访问中间节点,再访问右子树

从零开始学算法---二叉树

 3)后续遍历(LRD)

输出结果

从零开始学算法---二叉树

 小结: 所谓前序后序中序其实就是 访问根节点是在访问左右节点的前面、后面还是中间

继续阅读