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

Posted leesf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试判断一棵二叉树是否为二叉排序树相关的知识,希望对你有一定的参考价值。

一、描述

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

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

判断一颗二叉树是否为二叉平衡树 python 代码

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

NC60 判断一棵二叉树是否为搜索二叉树和完全二叉树