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

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

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

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

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

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

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

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

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

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

查看所有标签

猜你喜欢:

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

破茧成蝶:用户体验设计师的成长之路

破茧成蝶:用户体验设计师的成长之路

刘津、李月 / 人民邮电出版社 / 2014-7 / 69.00

市面上已经有很多专业的用户体验书籍,但解决用户体验设计师在职场中遇到的众多现实问题的图书并不多见。本书从用户体验设计师的角度出发,系统地介绍了其职业生涯中的学习方法、思维方式、工作流程等,覆盖了用户体验设计基础知识、设计师的角色和职业困惑、工作流程、需求分析、设计规划和设计标准、项目跟进和成果检验、设计师职业修养以及需要具备的意识等,力图帮助设计师解决在项目中遇到的一些常见问题,找到自己的职业成长......一起来看看 《破茧成蝶:用户体验设计师的成长之路》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换