#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define M 20typedef struct BTNode{char c;struct BTNode *lchild,*rchild;
};typedef struct BTNode * BTNodeptr;BTNodeptr stack[M];
BTNodeptr root;//在祖先树中找结点
BTNodeptr find_node(BTNodeptr np,char c){BTNodeptr result=NULL;if(np){if(np->c==c)result=np;else{result=find_node(np->lchild,c);if(result==NULL)result=find_node(np->rchild,c);}}return result;
}void visit(BTNodeptr p){printf("%c",p->c);
}void inorder(BTNodeptr t){BTNodeptr p=t;int top=-1;if(t!=NULL){do{for(;p!=NULL;p=p->lchild)stack[++top]=p;p=stack[top--];visit(p);p=p->rchild;}while(!(p==NULL&&top==-1));}
}BTNodeptr make_node(){BTNodeptr p=(BTNodeptr)malloc(sizeof(struct BTNode));p->c=0;p->rchild=p->lchild=NULL;return p;
}int main(){char ns[10]="ABCDEFG";int len=strlen(ns);int i,j;BTNodeptr p,q;BTNodeptr l,r;for(i=0;i<len;i++){if(root==NULL){root=make_node();root->c=ns[i];p=root;}else{p=find_node(root,ns[i]);}if(i*2+1<len){l=make_node();l->c=ns[i*2+1];p->lchild=l;}elsebreak;if(i*2+2<len){r=make_node();r->c=ns[i*2+2];p->rchild=r;}elsebreak;}inorder(root);
}


这里是引用

n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的二叉树,根由tree指向相关推荐

  1. 设某棵二叉树中度数为 0 的结点数为 N0 ,度数为 1 的结点数为 N1 ,则该二叉树中度数为 2 的结点数为? ;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有 ? 个空指针域

    度数为 2 的结点数为N0-1:有 2N0+N1个空指针域 分析: 根据总结点数=总度数+1,所以N0+N1+N2=0✘N0+1✘N1+2✘N2+1,得出N2=N0-1,度数为2的结点数就为N0-1 ...

  2. 二叉链表-创建、遍历(前序、中序、后序、非递归、层次)、复制、计算深度、结点数、销毁(C语言)

    目录 二叉树的定义 二叉树的性质 二叉链表的基本操作 二叉链表的结构定义 前序遍历创建 前序.中序.后序遍历 中序遍历的非递归算法(栈) 层次遍历(队列) 复制二叉树 计算深度 计算总结点数与叶子结点 ...

  3. SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)

    SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1-(n(n+1))/2]中,则在 B 中确定 a[i, j](i< ...

  4. 编写程序,从键盘输人 10个整数,之间以一个空格隔开,存放在一维数组中。找出值最大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以一个空

    题目:编写程序,从键盘输人 10个整数,之间以一个空格隔开,存放在一维数组中.找出值最大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以 ...

  5. 已知一棵完全二叉树存于顺序表sa中,sa.elem[1..sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表。

    已知一棵完全二叉树存于顺序表sa中,sa.elem[1-sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表. 分析:由二叉树的性质可知,一个下标为i的节点若有左子树,则其左 ...

  6. 用二叉链表存储二叉树,并判断二叉树是否为完全二叉树

    题目: 按要求二叉树按二叉链表形式存储, 1.写一个建立二叉树的算法:2.写一个判别给定的二叉树是否是完全二叉树的算法 分析:判断是否是完全二叉树的方法:若某结点无左子女就不应有右子女 建立二叉树[递 ...

  7. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适

    题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...

  8. 笛卡尔树 (25 分)笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字

    立志用最少的代码做最高效的表达 笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2.首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大.其次所有结点的 ...

  9. 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结

    假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...

最新文章

  1. 学计算机打字一段话,初学电脑基础知识打字
  2. 使用PHPExcel判别和格式化Excel中的日期格式
  3. 命令行执行php脚本中的$argv和$argc配置方法
  4. 对弈程序基本技术----Alpha-Beta搜索
  5. php java 架构_JAVA和PHP到底谁才是老大?
  6. 项目疑难杂症记录(四):Activity被重新创建的原因分析
  7. ubuntu 的问题,我一个人使用,却显示两人登录?
  8. 深度学习5-模型的保存与加载
  9. Linux常用命令系统相关
  10. 删库遭 GitHub 封号,开发者欲夺回发行权:“我只是犯了个编程错误”
  11. Mat常用构造函数及IplImage 与Mat 之间的相互转换
  12. 计算机应用if函数题目,if函数练习题.doc
  13. stata面板数据单位根检验llc_stata面板单位根检验怎样看结果?LLC、ADF_Fisher以及IPS,求助...
  14. 镜头超声波马达的工作原理
  15. 未来10年互联网的十大发展趋势
  16. java邮件增加签名_Java对文件添加数字签名
  17. 【性能测试】Jmeter性能测试实战
  18. TimesTen内存数据库监控 TT监控得懂这些
  19. js实现圆柱形轮播图
  20. 以一半的价格组装专业的深度学习工作站

热门文章

  1. php workman视频,PHP即时通讯系统单人多人聊天IM视频会议实时音视频红包功能
  2. java基本类型和包装类型
  3. INSERT INTO … SELECT 锁表问题
  4. Centos7 虚拟机联网配置
  5. 基于fs_11c14开发板的项目实践
  6. 如何在计算机上注销一个用户登录,怎么取消电脑开机密码直接登录电脑界面?...
  7. 【爬虫】微博#司徒大佬
  8. 【产品】包装盒:纸张厚度与克重对应关系
  9. kms的服务器改回系统默认,指定kms服务器地址后还原
  10. 26条MySQL性能优化的最佳经验