Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

算法设计题_树 PDF 下载


分享到:
时间:2021-02-02 06:32来源:http://www.java1234.com 作者:小锋  侵权举报
算法设计题_树 PDF 下载
失效链接处理
算法设计题_树 PDF 下载

本站整理下载:
 
 
相关截图:


主要内容:

 二叉树的链式存储结构 
typedef struct BiTNode{
 ElemType data;
 struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
2. 二叉树的遍历 (1)递归先序遍历: 
void PreOrder(BiTree T){
 if (T != NULL){
 visit(T);
 PreOrder(T ->lchild);
 PreOrder(T ->rchild);
 } } (2)非递归先序遍历 
void preOrder(BiTree b){
 BiTree *stack[20], *p;
 int top;
 if (b != NULL){
 top = 1;
 stack[top] = b; // 根结点入栈
 while (top > 0){
 p = stack[top]; // 出栈访问
 top--;
 visit(p);
 if (p ->rchild != NULL) // 右孩子入栈
 stack[++top] = p ->rchild;
 if (p ->lchild != NULL) // 左孩子入栈
 stack[++top] = p ->lchild;
 }
 } } (3)非递归中序遍历 
void InOrder(Bitree T){
 InitStack(S); // 初始化栈
 BiTree p = T; // p 是遍历指针
 while (p || !IsEmpty(S)){
 if (p){ // 根指针入栈,遍历左子树
 Push(S, p);
 p = p ->lchild;
 } else { // 根指针出栈,访问根结点,遍历右子树
 Pop(S, p);
 visit(p);
 p = p ->rchild;
1
 }
 }//while
}(4)非递归后续遍历(应用访问很广,极其重要) 
void PostOrder(BiTree T){
 InitStack(S);
 BiTree p = T, r = NULL;
 while (p || !IsEmpty(S)){
 if (p){ // 走到最左边
 push(S, p);
 p = p ->lchild;
 } else {
 GetTop(S, p);
 // 右子树存在,且未被访问
 if (p ->rchild && p ->rchild != r){
 p = p ->rchild; // 转向右子树
 push(S, p);
 p = p ->lchild; // 再走向最左
 } else {
 pop(S, p); 
 visit(p); // 访问该结点
 r = p; // 记录最近访问过的结点
 p = NULL; // 结点访问完后,重置 p 指针
 }
 }// else
 }// while
}(5)层次遍历(很重要) 
void LevelOrder(BiTree T){
 InitQueue(Q); // 初始化队列
 Bitree p; // p 为遍历结点
 EnQueue(Q, T); // 根结点入队
 while (!IsEmpty(Q)){
 DeQueue(Q, p);
 visit(p);
 if (p ->lchild != NULL) // 左孩子入队
 EnQueue(Q, p ->lchild);
 if (p ->rchild != NULL) // 右孩子入队
 EnQueue(Q, p ->rchild);
 } }
层次遍历的应用: (1) 求某一层的叶子数 / 分支结点。 (2) 求树的宽度。 (3) 非递归求高度。
(4) 判断是否是完全二叉树。
 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐