码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-08 21:23:12      阅读:189      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!