1.为什么会有树?因为当有大量的输入数据时,链表的线性访问时间就显得略长了。而树结构,其大部分操作的运行时间平均为O(logN)。2.树的实现并不难,几行代码就搞定了。struct TreeNode
{
Object element;
TreeNode *firstChild;
TreeNode *nextSibling;
}3.遍历形式:// 中序遍历二叉树
void in...
分类:
其他好文 时间:
2015-05-09 17:34:45
阅读次数:
102
题目:
问题一:
给定一颗二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。那么分层遍历如图3-17中的二叉树,正确输出应为:
1,
2,3
4,5,6
7,8
问题二:
写另外一个函数,打印二叉树中的某层次的节点(从左到右),其中根节点为第0层,函数原型为int...
分类:
其他好文 时间:
2015-05-08 09:43:16
阅读次数:
153
题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层。
思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问“以该二叉树根节点的左右子节点为根节点的两颗子树”中层次为k-1的节点
代码:
struct pNode {
int data;
pNode *lChild;
pNode *rChild;
};
int ...
分类:
其他好文 时间:
2015-05-07 14:40:05
阅读次数:
146
二叉树顺序存储结构
二叉树的顺序存储结构就是用一维数组存储二义树中的结点并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲与孩子的关系,左右兄弟的关系等。
顺序存储结构一般只用于完全二叉树。
将这棵二叉树存入到数组中,相应的下标对应其同样的位置:
二叉链表
typedef struct BiTNode /* 结点结构 */
{
TElemType...
分类:
其他好文 时间:
2015-05-06 23:00:42
阅读次数:
193
中序遍历二叉树1 递归算法
算法的递归定义是:
若二叉树为空,则遍历结束;否则
⑴ 中序遍历左子树(递归调用本算法);
⑵ 访问根结点;
⑶ 中序遍历右子树(递归调用本算法)。中序遍历的递归算法void InorderTraverse(BTNode *T)
{ if (T==NULL)
return;
InorderTraverse(T->...
分类:
其他好文 时间:
2015-04-30 10:41:25
阅读次数:
192
线索树 遍历二叉树是按一定的规则将树中的结点排列成一个线性序列,即是对非线性结构的线性化操作。如何找到遍历过程中动态得到的每个结点的直接前驱和直接后继(第一个和最后一个除外)?如何保存这些信息?问:一棵有n个结点的二叉树,有多少个空闲指针域未用? 若一棵二叉树有n个结点,则有n-1条指针连线 , 而n个结点共有2n个指针域(Lchild和Rchild) ,所以有n+1个空闲指针域未用。
可以...
分类:
其他好文 时间:
2015-04-30 10:39:36
阅读次数:
219
引言 发现二叉树的问题很多都是用递归解决的,除了按照剑指offer书中给的递归方法,自己也用栈的方法去实现了,两种方法其实深层次的思想差不多 分析问题 只要我们前序遍历,或者层次遍历二叉树,如果遇到节点就将左右子树交换,即可,递归基就是节点没有左右子树 解决问题 利用递归方法 这里要注意Corner...
分类:
其他好文 时间:
2015-04-29 23:08:40
阅读次数:
169
#include #define maxSize 5using namespace std;typedef struct BTNode{ char data; struct BTNode * lchild; struct BTNode * rchild;}BTNode;BTNode...
分类:
编程语言 时间:
2015-04-29 23:03:14
阅读次数:
150