当前位置: 首页 > news >正文

判断一个序列是不是二叉查找树的后序遍历结果

#include <cstdlib>
#include <iostream>

using namespace std;
//判断一个序列是不是二叉查找树的后序遍历结果
//2013.05.22 PM
bool isBack(int *p, int begin, int end)
{
     //边界值判断
     if(begin>end)
     return false;
     //序列为空或者只有一个元素,不用判断,怎样都是真 
     //if(end==0 ||end==1),这个判断有问题, 
     //return true;
     if(begin==end)
     return true;
     //后序遍历最后一个元素是根 
     int root=*(p+end);
     int i=begin;
   //开始的下标,直到遇到比根大的 元素停止。 
     for(i;i!=end;++i)
     {
         if(*(p+i)>root)
         break;                          
     }
     //mid的位置是第一个比root大的元素的位置 
     int mid=i;
     //从这点开始,出现比根小的元素停止,说明不是后序的 
     for(int j=mid;j!=end;++j)
     {
             if(*(p+j)<root)
             return false;
     }
     //递归左边的序列 
      bool left =isBack(p,begin,mid-1);
      //递归右边的序列 
      bool right =isBack(p,mid,end-1);
      return (left&&right);
         
        
} 
 


int main(int argc, char *argv[])
{
    //二叉查找树序列{1 2 3 4 5 6 7}
    //的后序排列为 1325764;
    //结果为真 
    int arr[]={1,3,2,5,7,6,4};
    //int *p=arr;
    bool res=isBack(arr,0,6);
    cout<<res<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

相关文章:

  • Lync Server 2010迁移至Lync Server 2013故障排错 Part 2: Lync Server 迁移后部分用户无法移池问题...
  • 压力测试Siege用法
  • oracle 中删除表 drop delete truncate 的区别
  • ssm框架开发过程中遇到的一错误以及解决问题提示
  • 为iStorage server设置ipsec策略
  • Redis文章索引
  • TreeMap 原理
  • Yii 获取验证码值
  • android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播...
  • mina之Iobuffer简单封装
  • Silverlight Navigation导航框架实例系列汇总
  • 自定义context自定义Dialog之Progress(二)
  • DELL服务器硬件信息采集SHELL脚本
  • hdu 2888 Check Corners
  • Android tabHost 刷新Activity
  • Google 是如何开发 Web 框架的
  • 0x05 Python数据分析,Anaconda八斩刀
  • Apache的80端口被占用以及访问时报错403
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Linux后台研发超实用命令总结
  • MySQL的数据类型
  • 代理模式
  • 多线程 start 和 run 方法到底有什么区别?
  • 记一次删除Git记录中的大文件的过程
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端面试总结(at, md)
  • 区块链分支循环
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 我看到的前端
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 大数据全解:定义、价值及挑战
  • ​一些不规范的GTID使用场景
  • !!java web学习笔记(一到五)
  • #Z2294. 打印树的直径
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (ZT)一个美国文科博士的YardLife
  • (二)Linux——Linux常用指令
  • (接口封装)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)基于IDEA的JAVA基础10
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET开源项目介绍及资源推荐:数据持久层
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • @取消转义
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [c#基础]DataTable的Select方法
  • [cocos2d-x]关于CC_CALLBACK
  • [codevs 1515]跳 【解题报告】
  • [codevs] 1029 遍历问题
  • [FC][常见Mapper IRQ研究]