线索二叉树:二叉搜索树转换为双向链表
来源:互联网 发布:sql查询去重 编辑:程序博客网 时间:2024/06/16 21:29
- #include <stdlib.h>
- #include <stdio.h>
- typedef struct TNode
- {
- int value;
- TNode* lchild;
- TNode* rchild;
- }TNode,*BTree;
- //二叉树转换为双向链表
- TNode* TreeToList(BTree tree,TNode* &lastNode)
- {
- TNode* head;
- //若树为空,返回空
- if (tree == NULL)
- {
- lastNode = NULL;
- return NULL;
- }
- //若无左子树,则该根节点为链表的头结点
- if (tree->lchild==NULL)
- {
- head = tree;
- }
- //若有左子树,递归调用转换函数将左子树转换为双向链表
- //左子树转换所得链表的头结点是整个树的头结点
- //左子树链表的尾结点与根节点相邻
- else
- {
- head = TreeToList(tree->lchild,lastNode);
- tree->lchild = lastNode;
- lastNode->rchild = tree;
- }
- //若无右子树,则该根节点为链表的尾结点
- if (tree->rchild==NULL)
- {
- lastNode = tree;
- }
- //若有右子树,递归调用转换函数将左子树转换为双向链表
- //右子树转换所得链表的尾结点是整个树的尾结点
- //右子树链表的头结点与根节点相邻
- else
- {
- tree->rchild = TreeToList(tree->rchild,lastNode);
- tree->rchild->lchild = tree;
- }
- return head;
- }
- int main()
- {
- BTree tree = (BTree)malloc(sizeof(TNode));
- tree->value = 4;
- tree->lchild = (TNode*)malloc(sizeof(TNode));
- tree->lchild->value = 2;
- tree->lchild->lchild = (TNode*)malloc(sizeof(TNode));
- tree->lchild->lchild->value = 1;
- tree->lchild->lchild->lchild = NULL;
- tree->lchild->lchild->rchild = NULL;
- tree->lchild->rchild = (TNode*)malloc(sizeof(TNode));
- tree->lchild->rchild->value = 3;
- tree->lchild->rchild->lchild = NULL;
- tree->lchild->rchild->rchild = NULL;
- tree->rchild = (TNode*)malloc(sizeof(TNode));
- tree->rchild->value = 6;
- tree->rchild->lchild = (TNode*)malloc(sizeof(TNode));
- tree->rchild->lchild->value = 5;
- tree->rchild->lchild->lchild = NULL;
- tree->rchild->lchild->rchild = NULL;
- tree->rchild->rchild = NULL;
- TNode* lastNode;
- TNode* listHead = TreeToList(tree,lastNode);
- TNode* node = listHead;
- while(node)
- {
- printf("%d ",node->value);
- node = node->rchild;
- }
- printf("\n");
- return 0;
- }
0 0
- 线索二叉树:二叉搜索树转换为双向链表
- 0052 二叉搜索树线索化为双向链表
- 二叉搜索树转换为双向链表
- diary5(二叉搜索树转换为双向链表)
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- java之二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为有序双向链表
- 将二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 搜索二叉树转换为双向链表
- 平衡二叉搜索树BST转换为双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- JAVA的加载机制
- 多线程下NSOperation、NSBlockOperation、NSInvocationOperation、NSOperationQueue的使用
- 锚点[AnchorPoint]
- js 图片滚动实现
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
- 线索二叉树:二叉搜索树转换为双向链表
- top 命令使用总结
- Justinmind Prototyper 5.6.1开启多交互事件支持
- 存储过程基本语法
- [cocos2d-x菜鸟学习记录]解析示例helloWorld(下)
- 【Cocos2d-x】coocs2d-x + scoket 解析Json 流程总结
- Java抽象类和接口的区别
- mySQL数据类型
- Eclipse快捷键大全