zoukankan      html  css  js  c++  java
  • 【面试】判断一棵二叉树是否为二叉排序树

    一、描述

      给定一棵二叉树,如何判断一棵树是否是二叉排序树。给出树结点定义如下

    class TreeNode {
        int key;
        TreeNode left;
        TreeNode right;
    
        public TreeNode(int key) {
            this.key = key;
        }
    }

    二、解题思路

      根据二叉排序树的性质,在进行中序遍历的时候,当前结点的值总是大于前驱结点的值,需要在遍历时保存前驱结点的值,这样有利于进行判断,基于这样的思路来进行解题。

    三、代码

      根据以上的解题思路(遍历时利用二叉排序树的性质),即可得到如下的代码。

    /**
     * Created by LEESF on 2016/9/8.
     */
    
    class TreeNode {
        int key;
        TreeNode left;
        TreeNode right;
    
        public TreeNode(int key) {
            this.key = key;
        }
    }
    
    public class IsBSTree {
        static boolean flag = true;
        static int last = Integer.MIN_VALUE;
    
        public static boolean isBSTree(TreeNode root) {
            if (root.left != null && flag)
                isBSTree(root.left);
            if (root.key < last)
                flag = false;
            last = root.key;
            if (root.right != null && flag)
                isBSTree(root.right);
            return flag;
        }
    }
  • 相关阅读:
    【后端】Python学习笔记
    【学习】JennyHui学英语
    【学习】JennyHui学英语
    【英语】Bingo口语笔记(3)
    LoadRunner目录分析
    性能测试常见用语
    [转]黑盒测试用例设计方法
    RUP
    软件质量管理杂谈
    关于BUG
  • 原文地址:https://www.cnblogs.com/leesf456/p/5854461.html
Copyright © 2011-2022 走看看