zoukankan      html  css  js  c++  java
  • 判断的后序遍历序列是否是二叉查找树

    二叉查找树:如果左子树不为空,那么左子树上的所有节点都小于根节点;

          如果右子树不为空,那么又子树上的所有节点都大于根节点;

          左右子树也是二叉排序树。

    在后序遍历得到的序列中,最后一个数字是树的根节点的值。数组中前面的数字可以分为两部分:
    • (1)第一部分是左子树结点的值,它们都比根结点的值小
    • (2)第二部分是右子树结点的值,它们都比根结点的值大
    • (3)递归左子树
    • (4)递归右子树

    代码:

      public class BinarySearchTrees
        {
            //有序遍历结果的特点是,最后一个元素是根元素,根据这个根元素会把其他的子序列按照大小分成两个部分,
            //最后递归地对这两个子序列分别进行上述操作
    
            public static bool VerifyBST()
            {
                int[] array = { 5,7,6,9,11,10,8};
              return  VerifyBST(array, 0, array.Length-1);
            }
    
            public static bool VerifyBST(int[] array, int start, int end)
            {
                if (start == end)
                    return true;
                int root = array[end];
    
                //遍历左子树
                int left = start;
                while (left < end && array[left] < root) { left++; }
                left--;
    
                //遍历右子树
                int right = left+1;
                while (right < end && array[right] > root)
                {
                    if (array[right] < root) //右子树如果有小于根节点的,直接返回
                        return false;
                    right++;
                }
    
                //递归左子树
                bool leftRecurse = true;
                if (left - start > 0)
                {
                    leftRecurse = VerifyBST(array, start, left);
                }
    
                //递归右子树
                bool rightRecurse = true;
                if (end - left > 0)
                {
                    rightRecurse = VerifyBST(array, left, end);
                }
    
                return leftRecurse&&rightRecurse;
            }
        }
    

      

  • 相关阅读:
    Python-sokect 示例
    Python装饰器
    javascript权威指南第22章高级技巧
    javascript权威指南第21章 Ajax和Comet
    javascript权威指南第20章 JSON
    javascript权威指南第17章 错误异常处理
    javascript权威指南第16章 HTML5脚本编程
    Bootstrap 表单布局示例
    javascript权威指南第15章 使用Canvas绘图
    贪心算法学习笔记
  • 原文地址:https://www.cnblogs.com/wuMing-dj/p/3379976.html
Copyright © 2011-2022 走看看