【学习点滴-数据结构-二叉树】二叉查找树转换成双链表
2012-05-31 15:00
411 查看
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #defineLEAF-1 typedefstructBTreenode{ BTreenode*lchild; BTreenode*rchild; intvalue; }BTreenode,*Btree; BTreenode*createTree(){ BTreenode*T; intt; scanf("%d",&t); if(t==LEAF){ T=NULL; }else{ T=(BTreenode*)malloc(sizeof(BTreenode)); T->value=t; T->lchild=createTree(); T->rchild=createTree(); } returnT; } voiddoChange(BTreenode*root,BTreenode*&head,BTreenode*&tail){ BTreenode*left,*right; if(root==NULL){ head=tail=NULL; return; } doChange(root->lchild,head,left); doChange(root->rchild,right,tail); if(left!=NULL){ left->rchild=root; root->lchild=left; }else{ head=root; } if(right!=NULL){ root->rchild=right; right->lchild=root; }else{ tail=root; } } BTreenode*TreeToLinkedList(BTreenode*root){ BTreenode*head=NULL,*tail=NULL; doChange(root,head,tail); returnhead; } voidpreOrder(BTreenode*root){ if(root!=NULL){ printf("%d",root->value); } if(root->lchild!=NULL){ preOrder(root->lchild); } if(root->rchild!=NULL){ preOrder(root->rchild); } } voidtraverse(BTreenode*head){ printf("traverse:"); BTreenode*iter=head; while(iter!=NULL){ printf("%d",iter->value); iter=iter->rchild; } printf("\n"); } voidreTraverse(BTreenode*root){ printf("reTraverse:"); BTreenode*iter=root; while(iter!=NULL&&iter->rchild!=NULL){ iter=iter->rchild; } while(iter!=NULL){ printf("%d",iter->value); iter=iter->lchild; } printf("\n"); } main(){ BTreenode*root; root=createTree(); preOrder(root); printf("\n"); root=TreeToLinkedList(root); traverse(root); reTraverse(root); system("pause"); return0; }
//TODO转换方式2:中序遍历的过程中就直接处理好相应的指针~~
相关文章推荐
- 【学习点滴-数据结构-二叉树】序列是否是二叉查找树的后序遍历结果
- 【学习点滴-数据结构-二叉树】二叉树转换为其镜像。
- 【学习点滴-数据结构-二叉树】二叉查找树源码实现
- lintcode,将二叉查找树转换成双链表
- 【学习点滴 -数据结构-二叉树】 二叉树的遍历(全)
- 【学习点滴-数据结构-二叉树】判断二叉树是否是平衡二叉树
- 【学习点滴-数据结构-二叉树】整数序列放入二叉树中
- LintCode将二叉查找树转换成双链表JAVA版
- 【学习点滴-数据结构-二叉树】求二叉树中某两个节点的最近公共祖先
- 数据结构 算法面试100题 之 二叉树转换成双向链表
- 【学习点滴-数据结构-栈&队列】 栈的应用之一:数值转换
- 【学习点滴-数据结构-二叉树】和为某一值的二叉树路径~
- 【学习点滴-数据结构-二叉树】求二叉树两个节点之间的最大距离
- LintCode-剑指Offer-(378)将二叉查找树转换成双链表
- 将二叉查找树转换成双链表
- lintcode---将二叉查找树转换成双链表
- 【学习笔记----数据结构12-树、森林与二叉树的转换】
- 数据结构:题目(1)二叉树转换为双向链表
- 【学习点滴-数据结构-二叉树】二叉树中找大于等于(min+max)/2的节点
- [LintCode]378.将二叉查找树转换成双链表