标签:数据结构之二叉树
1、二叉树:非线性数据结构,常被用于实现二叉查找树和二叉堆
二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T。
满二叉树
完全二叉树
平衡二叉树
2、
二叉树的遍历:
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
递归算法:
<1>先序遍历:
<2>中序遍历
<3>后序遍历
<4>层次遍历
非递归算法:
<1>先序遍历:
【思路】:访问T->data后,将T入栈,遍历左子树;遍历完左子树返回时,栈顶元素应为T,出栈,再先序遍历T的右子树。
<2>中序遍历
<3>后序遍历
<4>层次遍历
即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)
3、二叉树查找
查找树的创建(createTree)
假设有如下数组4,1,45,78,345,23,12,3,6,21
首先选定4为root,然后遍历剩下的数字,如果大于等于4则放到4的右侧,小于4放到4的左侧,最后构建成的树:所有的左孩子都小于父节点,所有的右孩子都大于等于父节点。如下图:
2. 遍历查找树(displayTree)
按照左中右的顺序遍历树,结果为:1,3,4,6,12,21,23,45,78,345,遍历的结果就是已经排好序的数字。
3. 查找树中的节点(searchTree)
从根节点开始,如果大于等于根节点,则查找根节点的右侧;如果小于根节点,则查找根节点的左侧,直到查找到节点。
比如要查找12:
比4大,往右走;
比45小,往左走;
比23小,往左走;
找到12
4、二叉排序树
若根结点的关键字值等于查找的关键字,成功。
标签:数据结构之二叉树
原文地址:http://jun123.blog.51cto.com/9893428/1679029