二叉树转为有序列表
来源:互联网 发布:免费身份证扫描软件 编辑:程序博客网 时间:2024/05/16 07:47
#include <iostream>struct BinaryBode{int val;BinaryBode *left;BinaryBode *right;BinaryBode(int v=0,BinaryBode *lt=nullptr,BinaryBode *rt=nullptr):val(v),left(lt),right(rt){ }};//创建时传递的一定是指针引用,因为若传入的是指针,则原来的空指针还是会指向空指针int insert(BinaryBode *&phead,int val){if(phead==nullptr)phead=new BinaryBode(val,nullptr,nullptr);else if(val<phead->val)insert(phead->left,val);else if(val>phead->val)insert(phead->right,val);else;//Duplicate;do nothingreturn 0;}int printTree(BinaryBode *phead){if(phead!=nullptr){std::cout<<phead->val<<" ";printTree(phead->left);printTree(phead->right);}return 0;}BinaryBode* findMinNode(BinaryBode *phead){if(phead==nullptr)return nullptr;while(phead->left!=nullptr)phead=phead->left;return phead;}int convertNode(BinaryBode *phead,BinaryBode *&last_node){if(phead==nullptr)return 0;//对左子树进行转换,last_node是转换后链表最后一个结点的指针if(phead->left!=nullptr)convertNode(phead->left,last_node);//将树结点的左指针指向左子树的最后一个结点phead->left=last_node;//将左子树的最后一个结点的右指针指向树结点if(last_node!=nullptr)last_node->right=phead;//更新最后一个结点为树结点last_node=phead;//对右子树进行转换,last_node是链表最优一个结点指针if(phead->right!=nullptr)convertNode(phead->right,last_node);return 0;}BinaryBode* bsTreeToList(BinaryBode *phead){if(phead==nullptr)return nullptr;BinaryBode *head=findMinNode(phead);BinaryBode *last_node=nullptr;convertNode(phead,last_node);return head;}int printList(BinaryBode *phead){while(phead!=nullptr){std::cout<<phead->val<<" ";phead=phead->right;}std::cout<<std::endl;return 0;}
<pre name="code" class="cpp">#include <iostream>#include "bsTree2orderList.h"int main(){BinaryBode *head=nullptr;insert(head,10);insert(head,6);insert(head,14);insert(head,4);insert(head,8);insert(head,12);insert(head,16);printTree(head);std::cout<<std::endl;BinaryBode *lhead=bsTreeToList(head);printList(lhead);return 0;}
0 0
- 二叉树转为有序列表
- 有序数组转为二叉查找树
- 有序二叉树转为有序双向链表
- 排序二叉树转为双向列表
- 把一个有序的数组转为二叉树存储
- 搜索二叉树转为有序双向链表
- 算法:有序数组转为平衡的二叉搜索树
- 【数据结构】将有序数组转为二叉搜索树
- 二叉搜索树转为有序双向链表(递归算法与非递归算法)
- LeetCode Convert Sorted List to Binary Search Tree(有序单链表转为平衡二叉树)
- 九:二叉搜索树与双向链表(二叉搜索树转为有序双向链表)
- 有序列表的合并(由C转为JavaScript实现)
- 平衡二叉有序树
- 中缀表达式转为二叉树
- 中缀表达式转为二叉树
- poj3437 多叉树转为二叉树
- 二叉树定义--有序树
- 广度遍历有序二叉树
- Struts2+spring+Mybatis 简单配置
- Linux 安装配置 apache
- Project Euler:Problem 84 Monopoly odds
- [uwsgi-body-read] Error reading 65536 bytes. Content-Length: 560903 consumed: 0 left: 560903 message
- 总结POJ
- 二叉树转为有序列表
- Linux Shell编程学习笔记(4)
- Merge Two Sorted Lists
- 用Green定理解一道据说是小学六年级的平面几何数学题
- struts标签<logic:iterate>的用法
- Android工程架构的总结
- [LeetCode]Binary Tree Level Order Traversal II
- Android之——jni通用工具方法
- 欢迎使用CSDN-markdown编辑器