题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true ,否则返回 false 。

例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:

8
       /  \
      6    10
    / \    / \
   5   7   9  11

因此返回true。

#include <iostream>
#include <stack>
using namespace std;
//节点
struct node
{node *lchild,*rchild;int value;
};//二元查找树
class list
{
public:list();bool PostOrder_verify(int sequence[],int length);
private:node* root;
};bool list::PostOrder_verify(int sequence[],int length)
{//如果root为空,返回falseif(NULL==root)return false;stack<node*> s;int temp_length=0;//temp为临时节点,判断出栈条件node *curr=root,*temp=NULL;while(1){while(curr){s.push(curr);curr=curr->lchild;}if(s.empty())break;curr=s.top();if(NULL==curr->rchild || temp==curr->rchild){//原先输出后序遍历的位置//cout<<curr->value<<'\t';if(temp_length==length)return false;//如果不等就返回falseif(curr->value!=sequence[temp_length++])return false;temp=curr;s.pop();curr=NULL;}elsecurr=curr->rchild;}//如果数组长度长于树长度,返回falseif(temp_length!=length-1)return false;elsereturn true;
}list::list()
{cout<<"请输入您要输入的节点,按'#'退出:"<<endl;int i;//用cin.fail(),cin.bad()判断也行if(cin>>i==NULL){cout<<"您的输入有误"<<endl;exit(-1);}//创建根节点root=new node;root->value=i;root->lchild=NULL;root->rchild=NULL;//建立两个临时节点,p开辟新节点,q为二元查找定位node *p,*q;while(cin>>i!=NULL){//开辟新节点p=new node;p->value=i;p->lchild=NULL;p->rchild=NULL;//二元查找树比较从q=root开始,小则转左,大则转右,如果有位置就插入q=root;while(1){//插入节点小于该节点比较值,左节点为空则插入,否则q=q->lchild继续判断if(p->value<q->value){if(q->lchild)q=q->lchild;else{q->lchild=p;break;}}//插入节点大于该节点比较值,右节点为空则插入,否则q=q->rchild继续判断else if(p->value>q->value){if(q->rchild)q=q->rchild;else{q->rchild=p;break;}}//如果两节点相等,直接退出程序(有些暴力)else{cout<<"node repeated!!"<<endl;exit(-1);}}}
}void main()
{int sequence[]={7,6,4,11,12,10};int length=sizeof(sequence)/sizeof(int);list test;cout<<test.PostOrder_verify(sequence,length)<<endl;system("pause");
}

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/03/27/2985446.html

二元查找树的后序遍历结果相关推荐

  1. 程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8   ...

  2. 6.二元查找树的后序遍历结果[PostOrderOfBST]

    [题目] 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...

  3. 判断整数序列是不是二元查找树的后序遍历结果

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果. 如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...

  4. 9判断整数序列是不是二元查找树的后序遍历结果

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252095.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  5. 判断某个数列是不是二元查找树的后序遍历。

    给定一个数组序列,判断这个数列是不是二叉查找树的后序遍历.后序遍历是先左节点,再右节点,最后根节点.二叉查找树定义为节点的左子树都小于该节点,该节点的右子树都大于该节点.如果是后序遍历,那么根是最后一 ...

  6. leetCode 1110 删点成林(树,后序遍历)

    题目链接:点击查看 题目描述: 给定一个整数二叉树和一些整数,求删掉这些整数对应的节点后,剩余的子树. 输入输出: 输入:root = [1,2,3,4,5,6,7], to_delete = [3, ...

  7. XDOJ 363 输出快速排序递归算法隐含递归树的后序遍历序列 AC

    像我这样的菜鸡也没有什么能输出的,好像我写题解也不算输出. 最近期末了,写数据结构实验的时候,这个题写了挺久的,搞出来记录一下. 输出快速排序递归算法隐含递归树的后序遍历序列 描述: 快速排序递归算法 ...

  8. 后序遍历c语言程序,C++对树进行后序遍历的代码

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include #include struct Node{ Node *lchild;/ ...

  9. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

最新文章

  1. R语言进行dataframe数据内连接(Inner join):使用R原生方法、data.table、dplyr等方案
  2. c语言volatile_[技术]为什么单片机C语言编程时某一变量有时乱码
  3. React开发(165):ant design validateFields
  4. 你抢的不是春节红包而是云
  5. Eigen官网教程(2) Array类和元素级操作
  6. ecshop mysql 报错_ecshop数据库操作函数
  7. TUIO之TuioDemo
  8. 你管这叫操作系统源码(十五)
  9. 虚拟摄像头(拉rtsp流或桌面作为图像源)
  10. P5556 圣剑护符 题解
  11. 使用windows命令行 启动WeGame
  12. EM算法-数学原理及其证明
  13. android APK 解析软件包出现问题 解决办法
  14. 完美解决迅雷极速版强制升级到迅雷X
  15. 自适应漫画APP下载单页二次元
  16. 7.Linux文件管理命令---grep:查找字符串
  17. HaaS EDU场景式应用学习 - 分歧争端机
  18. 素描为什么是一切绘画的基础?素描关系你了解吗?
  19. i7-10510U性能怎么样?相当于台式机什么水平
  20. 用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -1

热门文章

  1. Mware HA实战攻略之五VMwareHA测试验收
  2. [arm驱动]linux内核时钟
  3. Angular4学习笔记(六)- Input和Output
  4. 【CDN】域名无法访问,ping不到,tracert不到
  5. add-apt-repository cloud-archive:liberty
  6. 在Linux和Mac OS X系统上运行.NET
  7. 低学历者为何能骗取30万年薪职位
  8. 现实世界的Windows Azure:采访InishTech的销售及市场部主管Andrew O’Connor
  9. Diango博客--7.自动生成文章摘要
  10. redis服务器端和客户端启动