求二元查找树的镜像
来源:互联网 发布:淘宝评价怎么删除图片 编辑:程序博客网 时间:2024/06/03 05:07
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
#include <iostream>#include <stack>using namespace std;struct node{node *lchild,*rchild;int value;};class list{public:list();void InOrder();void turnover();private:void turnover0(node* p);private:node* root;};void list::turnover0(node* p){if(NULL==p)return;node* temp=p->lchild;p->lchild=p->rchild;p->rchild=temp;turnover0(p->lchild);turnover0(p->rchild);}void list::turnover(){ turnover0(root);}void list::InOrder(){if(NULL==root)return;stack<node*> s;node* curr=root;while(1){while(curr){s.push(curr);curr=curr->lchild;}if(s.empty())break;curr=s.top();s.pop();cout<<curr->value<<'\t';curr=curr->rchild;}}list::list(){cout<<"请输入您想要输入的数字,按‘#’结束:"<<endl;int i;if(cin>>i==NULL){cout<<"您的输入有误"<<endl;exit(-1);}root=new node;root->value=i;root->lchild=NULL;root->rchild=NULL;node *p,*q;while(cin>>i){p=new node;p->value=i;p->lchild=NULL;p->rchild=NULL;q=root;while(1){if(p->value<q->value){if(q->lchild==NULL){q->lchild=p;break;}q=q->lchild;}else if(p->value>q->value){if(q->rchild==NULL){q->rchild=p;break;}q=q->rchild;}}}}void main(){ list test;test.InOrder();cout<<endl;test.turnover();test.InOrder();system("pause");}
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像
- 求二元查找树的镜像 C++实现
- 求二元查找树树的镜像(剑指offer笔记)
- 程序员面试题精选(11):求二元查找树的镜像
- 程序员面试题精选100题(11)-求二元查找树的镜像
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- ubuntu上安装sublime text编辑器
- 在Ubuntu下安装tinyos详细教程以及运行TestSerial例子出现错误解决办法
- 基于Verilog HDL的有限状态机
- [转]ORACLE函数大全
- 求二元查找树的镜像
- Cygwin的文件权限管理
- Android TabHost的使用
- 安装scribe注意
- 面试遇到的几个概念 当做复习
- java.sql.SQLException: [BEA][DB2 JDBC Driver][DB2]ILLEGAL SYMBOL t1; VALID SYMBOLS ARE AME
- 简单的手指绘图并保存所绘图片【源码】
- iphone4越狱后如何安装IPA软
- OGRE 源码编译方法