首页 > 编程语言 > 详细

【面试】判断一棵二叉树是否为二叉排序树

时间:2016-09-08 21:22:45      阅读:335      评论:0      收藏:0      [点我收藏+]

一、描述

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

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;
    }
}

 

【面试】判断一棵二叉树是否为二叉排序树

原文:http://www.cnblogs.com/leesf456/p/5854461.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!