你应该掌握的——树和二叉树
来源:互联网 发布:java数据连接池原理 编辑:程序博客网 时间:2024/04/30 10:23
转载地址:http://blog.csdn.net/yi_zz/article/details/7396987
我在上课的时候,由于各种原因,上课老师讲的自己总不爱听,现在到火烧眉毛了,才知道这些基础知识的重要性,现在想想,也没有那么的困难。重在理解这些底层的概念,然后考试考的都是一些很简单的概念和计算,在这里我来阐述一下树和二叉树的一些考点。
基础知识一点也不能马虎。所以我们从最基础的开始说起。
以这棵树来说几个基本的概念。
结点的度:一个结点的子树数目称为该结点的度。(例如结点1的结点的度为3,结点2的结点的度为3,结点3的结点的度为0)。
树的度:所有结点度当中,度最高的一个。(上图树的度是3)。
叶子结点:上图应该是:3、5、6、7、9、10
分之结点:除了叶子结点,其他的都称为分之结点,和叶子结点构成互补的关系。(1、2、4、8)
内部结点:分之结点除了根结点以外的。(2、4、8)
父结点:如5号结点就是2号结点的子结点。
子结点:2号结点是5号结点的父结点。
兄弟结点:5、6、7称为兄弟结点,出自同一个父亲2号结点。
这三个概念是一个相对的概念。
层次:0层、1层、2层、3层。
还有一个公式就能做题了:总结点=所有度结点的和+1(应该是父结点)
树的遍历:
我们还是根据这图来看看树的三种遍历。
前序遍历:先从根部出发,然后由左向右,一颗一颗树来完成遍历。先访问根再访问叶子结点,这就是我画出来的前序遍历图,箭头的方向表示遍历的顺序。a为起点。
结果是:1、2、5、6、7、3、4、8、9、10
后序遍历:顾名思义,就是从叶子结点出发,先遍历叶子结点再到根结点,最后到父结点。我画出顺序可能会更直观点。
结果是:5、6、7、2、3、9、10、8、4、1
层次遍历:按0层、1层、2层、3层,从左到右来遍历
结果是:1、2、3、4、5、6、7、8、9、10
我们接着就可以来理解二叉树的重要的特性:
我们找五颗二叉树来进行分析:这样分析就简单多了,我都觉得不用分析了,但是还是说说吧。
1、二叉树中,第i层上最多有2的i次方个结点(i>=0)。这个很基本,这也是二叉树和树的区别。
2、深度为K的二叉树至多有2的(k+1)次方 -1个结点(k>=0)。(深度为二叉树中层数最大的叶节点的层数),满二叉树的深度为2,则共有7个结点。
3、对任何一颗二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1;(一定不要忘了根结点的度也是2)。
二叉树的遍历
前序遍历:应该是怎么个流程呢:我们看图。
遍历的结果是: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
那么树和二叉树就说这么多,我相信掌握这么多,也差不多够用了哦,对于上面的基础知识,要是我有不对的地方,希望大家指出哈。
- 你应该掌握的——树和二叉树
- 你应该掌握的——树和二叉树
- 你应该掌握的——树和二叉树
- 你应该掌握的——树和二叉树
- 你应该掌握的树和二叉树
- 微课堂第12期:移动互联网测试——你应该要掌握的技能树
- 【后续更新】你不应该汉化——使用Eclipse应该掌握的几个英语词汇
- 自己应该掌握的技能树
- 你应该掌握的前端知识
- Android Service 你应该掌握的东西
- 关于Java,你应该掌握的
- 关于Handler,你应该掌握的一切
- 你应该掌握的“百度一下”技巧
- 关于Java你应该掌握的基础知识—银行笔试必考(作者亲生经历的java试题)
- 字符集和字符编码(Charset & Encoding)—每个软件开发人员应该无条件掌握的知识!
- 字符集和字符编码(Charset & Encoding)—每个软件开发人员应该无条件掌握的知识!
- 你应该掌握的-面向对象的六大原则
- ——每个软件开发人员应该无条件掌握的知识!
- 用PrintWriter解决servlet的中文输出问题
- iconv()函数进行编码转换时的一个注意点
- as3 解析xml 核心代码
- 如何使用面向对象编程方式实现--《万能罗》(完整剧本)
- 单元测试基本概念
- 你应该掌握的——树和二叉树
- 设备升级到ios5,又不想升级为 LION 而正常联机调试的方法
- 表达式求值
- 《Boost程序库完全开发指南——深入C++“准”标准库》读书笔记(一)
- 时间风声
- 打开Eclipse时出现"Failed to create the Java Virtual Machine"怎么办?
- 在protel中插入图片
- uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operatornew(unsigned int)" (??2@YAPAXI@Z) a
- Asp.Net的简单认知