zoukankan      html  css  js  c++  java
  • 剑指offer——35二叉树的后序遍历

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
     
    题解:
      这道题,一开始以为将后序遍历排序后的得到中序遍历,然后利用后序遍历和中序遍历进行二叉树的重组,但是由于后序遍历未必是BST树的,故得到的中序遍历未必是正确的;
      所以,根据后序遍历,直接对树的左右子树进行判断。
      
     1 class Solution {
     2 public:
     3     bool VerifySquenceOfBST(vector<int> sequence) {
     4         if (sequence.size() == 0)return false;
     5         return isBST(sequence, 0, sequence.size() - 1);
     6     }
     7     bool isBST(vector<int>v, int L, int R)
     8     {
     9         if (L >= R)return true;
    10         int root = v[R];
    11         int i = L;
    12         while (v[i] < root)++i;//找到左子树
    13         int j = i;
    14         while (j < R)if (v[j++] < root)return false;//判断右子树
    15         return isBST(v, L, i - 1) && isBST(v, i, R - 1);    
    16     }    
    17 };
  • 相关阅读:
    wepy框架入门
    认识WebStorm-小程序框架wepy
    列表
    透明盒子
    wepy框架滑动组件使用
    底部导航栏效果
    安装less/sass
    wepy快速入门
    实现返回顶部-wepy小程序-前端梳理
    音乐播放器-图片切换-轮播图效果
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11681930.html
Copyright © 2011-2022 走看看