树和二叉树
2016-02-05 19:19
197 查看
1、树
树的遍历分为前序遍历、后序遍历和层次遍历。
● 前序遍历:在任意子树中,遍历顺序为父节点、左孩子结点、右孩子结点。上图前序遍历顺序为:1
2 5 6 7 3 4 8 9 10 。
● 后序遍历:在任意子树中,遍历顺序为左孩子结点、右孩子结点、父节点。上图后序遍历顺序为:5
6 7 2 3 9 10 8 4 1 。
● 层次遍历:从上到下为树分层,第一层可为0层也可为1层,然后逐层遍历。上图层次遍历顺序为:12 3 4 5 6 7 8 9 10 。
2、二叉树
值得注意的是,二叉树不是特殊的树,它是一种独立的数据结构。● 满二叉树:任意树内部节点的度都为2;
● 完全二叉树:二叉树的n-1层都为满二叉树,并且第n层的节点是从左向右依次排列的;
● 非完全二叉树:不满足完全二叉树的二叉树。
二叉树的重要特性:
● 二叉树第i层上的结点数目最多为2i-1(上标)(i≥1);
● 深度为k的二叉树至多有2k-1(上标)个结点(k≥1);
● 在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则no=n2+1;
还有:
3、二叉树的遍历
二叉树的遍历相对于树的遍历多了一个中序遍历,即按照左子节点、父节点、右子节点的顺序遍历,例如对如下的二叉树有:前序遍历:1 2 4 5 7 8 3 6 ;
中序遍历:4 2 7 8 5 1 3 6 ;
后序遍历:4 8 7 5 2 6 3 1 ;
层次遍历:1 2 3 4 5 6 7 8 。
4、树与二叉树的转换
● 转换标准:树的子节点全部作为二叉树的左节点,树的兄弟节点作为二叉树的右节点。
● 简便方法:树的节点与子节点连线中只保留最左边的一条,然后横向相连,其中黑色斜线作为左子树的边,蓝色横线作为右子树的边,如图2。
● 归纳总结:转换之后,树的前序遍历和二叉树的前序遍历相同;树的后序遍历等于二叉树的中序遍历。
相关文章推荐
- poj 3159 Candies(差分约束系统)
- [Redux] Passing the Store Down Explicitly via Props
- ubuntu14操作系统chrome标签和书签乱码解决
- Java [Leetcode 190]Reverse Bits
- 与一线Linux嵌入式开发project师的对话
- poj 3620 Avoid The Lakes
- junit测试延伸--方法的重复测试
- junit测试延伸--方法的重复测试
- MySQL多实例管理
- zoj1093 dp入门
- 常用meta整理,页面技术,SEO优化
- 异或(Exclusive-OR,Wuhan 2009,LA 4487)
- 【HDU 2160】母猪的故事
- 在开发板(JZ2440)里启动内核出现了--Bad Data CRC
- C语言:链表实现的一个实例
- C语言:链表实现的一个实例
- hdoj 2544 最短路
- c#之new关键字
- 1.JVM运行时数据区
- 621C. Wet Shark and Flowers【概率】