先序构建二叉树及先序遍历二叉树
来源:互联网 发布:自拍软件源码 编辑:程序博客网 时间:2024/05/17 04:33
/*先序为DLR(D:根节点,L:左子树,R:右子树)
a
/ \
b c
/ \ / \
d * * e
*/
//先序序列为abdce,输入为abd***c*e**(*表示空格,代表空树),输入按满二叉树输入
a
/ \
b c
/ \ / \
d * * e
*/
//先序序列为abdce,输入为abd***c*e**(*表示空格,代表空树),输入按满二叉树输入
//每一个节点都是一个子树的根节点
void pre_create_tree(treenode **T){ //递归法char datatemp;fflush(stdin);datatemp=getchar();if(datatemp=='*'){*T=NULL;}else{if((*T=(treenode*)malloc(sizeof(treenode)))==NULL){exit(0);}else{(*T)->data=datatemp;(*T)->lc = (*T)->rc = NULL;pre_create_tree(&(*T)->lc);pre_create_tree(&(*T)->rc);}}}void pre_visit_tree(treenode *T){ //递归法if(T!=NULL){printf("%c ", T->data);pre_visit_tree(T->lc);pre_visit_tree(T->rc);}else{return;}}struct stack_typedef{treenode** stack_head;treenode** stack_top;int stack_used;};typedef struct stack_typedef stack;#define stack_max 1000void stack_init(stack *mystack){if((mystack->stack_head=(treenode**)malloc(sizeof(treenode*)*stack_max))==NULL)exit(0);mystack->stack_used = 0;mystack->stack_top = mystack->stack_head;}void stack_del(stack *mystack){free(mystack->stack_head);}void stack_push(stack *mystack, treenode *data){if(mystack->stack_used<stack_max){*(mystack->stack_top) = data;mystack->stack_used ++;mystack->stack_top ++;}}treenode* stack_pop(stack *mystack){if(mystack->stack_used>0){mystack->stack_used--;mystack->stack_top--;return *mystack->stack_top;}return NULL;}void pre_visit_tree2(treenode *T){ //非递归法,需要使用栈保证输出正确,递归<=>栈stack mystack;stack_init(&mystack);while(1){printf("%c ", T->data);if(T->lc!=NULL){stack_push(&mystack, T);T=T->lc;}else if(T->rc!=NULL){//stack_push(&mystack, T);T=T->rc;}else{//T=stack_pop(&mystack);while(T->rc==NULL&&mystack.stack_used!=0){T=stack_pop(&mystack);}if(T->rc!=NULL)T=T->rc;elsebreak;}};printf("\n");}
0 0
- 先序构建二叉树及先序遍历二叉树
- 先序遍历构建二叉树 java
- 二叉树的先序建立及先序遍历:
- 先序遍历二叉树
- 先序遍历二叉树
- 二叉树 - 先序遍历
- 先序遍历二叉树
- 先序遍历二叉树
- 中序遍历和先序遍历构建二叉树
- 【二叉树】先序遍历二叉树
- 已知二叉树中序,先序,构建树。
- 先序序列构建二叉树
- 先序构建二叉树_preorder
- 先序创建二叉树及三种遍历
- 非递归先序遍历二叉树
- 二叉树的先序遍历
- 非递归先序遍历二叉树
- 先序遍历二叉树 [非递归]
- http异步请求&Future异步多线程
- UIScrollView 简单使用
- HTML&CSS学习4——相对定位和绝对定位
- 学习之路2----JDBC中addBatch()方法
- whatsoever
- 先序构建二叉树及先序遍历二叉树
- 关于博客中的FireMonkey组件可到网盘下载
- 设计模式之适配器模式
- SVN 图标不显示 解决方案
- debian软件源source.list文件格式说明
- Makefile之使用make更新函数库文件
- ECC中标准表字段与BW中信息对象的对应关系表
- VS2010 build出错:error MSB6006: “mt.exe”已退出,代码为 31
- Android JNI(实现自己的JNI_OnLoad函数)