判断搜索二叉树、完全二叉树

栏目: 数据库 · 发布时间: 7年前

内容简介:搜索二叉树的定义是:二叉树中任一结点的右结点都比自己大,左节点都比自己小判断方式很简单:二叉树分两种情况来判断是否是完全二叉树:

如何判断一棵树是搜索二叉树

搜索二叉树的定义是:二叉树中任一结点的右结点都比自己大,左节点都比自己小

判断方式很简单:二叉树 中序遍历 ,判断遍历的结点值是否是 升序 即可

如何判断一棵树是完全二叉树

分两种情况来判断是否是完全二叉树:

false

举个例子,对于任意给定的二叉树(例如下图所示), 按层遍历 ,依次判断上面的情况

判断搜索二叉树、完全二叉树

首先看0号结点,有左也有右;遍历到1号结点,有左也有右;遍历到2号结点,有左也有右;遍历到3号结点,有左也有右;遍历到4号结点,满足上面第二种情况了,所以开启一个阶段,这个阶段导致后面所有遍历到的结点,必须是叶子结点;5是叶子结点,6是叶子节点,7,8,9都是叶子结点,此时遍历完了,没有任何错误,返回 true

还是上图,如果将9改为4的右结点,当遍历到4的时候,因为违反了第一条规则,所以直接返回 false

public static boolean isCBT(Node head) {
    if(head == null)
        return true;
    Queue<Node> q = new LinkedList<Node>();
    boolean leaf = flase;
    Node l = null;
    Node r = null;
    q.offer(head);
    while(!q.isEmpty()) {
        head = q.poll();
        l = head.left;
        r = head.right;
        if((leaf && (l != null || r != null)) || (l == null && r != null))
            return false;
        if(l != null)
            q.offer(l);
        if(r != null);
            q.offer(r);
        else // l != null && r == null
            leaf = true;
    }
    return true;
}

以上所述就是小编给大家介绍的《判断搜索二叉树、完全二叉树》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Seasoned Schemer

The Seasoned Schemer

Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00

drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具