博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二元查找树的后序遍历结果
阅读量:7060 次
发布时间:2019-06-28

本文共 1651 字,大约阅读时间需要 5 分钟。

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

例如输入576911108,由于这一整数序列是如下树的后序遍历结果:

         8

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

因此返回true

#include 
#include
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为空,返回false if(NULL==root) return false; stack
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<
value<<'\t'; if(temp_length==length) return false; //如果不等就返回false if(curr->value!=sequence[temp_length++]) return false; temp=curr; s.pop(); curr=NULL; } else curr=curr->rchild; } //如果数组长度长于树长度,返回false if(temp_length!=length-1) return false; else return true;}list::list(){ cout<<"请输入您要输入的节点,按'#'退出:"<
>i==NULL){ cout<<"您的输入有误"<
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
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!!"<

 

 

转载地址:http://iwfll.baihongyu.com/

你可能感兴趣的文章
React 重要的一次重构:认识异步渲染架构 Fiber
查看>>
TensorFlow笔记(2)——利用TensorFlow训练一个最简单的一元线性模型
查看>>
TensorFlow笔记(4)——优化手写数字识别模型之代价函数和拟合
查看>>
微服务java_b2b商城系统_java商城源码100%开源适合2次开发-(七)高可用的分布式配置中心(Spring Cloud Config)...
查看>>
Swift5.0新特性更新
查看>>
React Redux 中间件思想遇见 Web Worker 的灵感(附demo)
查看>>
超可爱的颜文字,我要放到代码里❛‿˂̵✧
查看>>
Laravel核心解读--观察者模式
查看>>
re:Invent第三天:除了拥抱混合云,AWS还一口气发了这些新产品
查看>>
精益业务分析宣言解读
查看>>
细数iOS上的那些安全防护
查看>>
H5打造属于自己的视频播放器(HTML篇)
查看>>
关于人工智能,你所需了解的基本知识
查看>>
2019,聊聊Web技术的发展
查看>>
centos7使用kubeadm配置高可用k8s集群的另一种方式
查看>>
深入探索 Kdump
查看>>
three.js 坐标系、camera位置属性、点、线、面
查看>>
kubernetes1.9安装dashboard,以及token认证问题
查看>>
linux tcpdump
查看>>
ASP.NET (Web) + C#算法 | 生成随机数字序列(随机数字+每个数字取随机不重复的位置和颜色)...
查看>>