内容简介:搜索二叉树的定义是:二叉树中任一结点的右结点都比自己大,左节点都比自己小判断方式很简单:二叉树分两种情况来判断是否是完全二叉树:
如何判断一棵树是搜索二叉树
搜索二叉树的定义是:二叉树中任一结点的右结点都比自己大,左节点都比自己小
判断方式很简单:二叉树 中序遍历 ,判断遍历的结点值是否是 升序 即可
如何判断一棵树是完全二叉树
分两种情况来判断是否是完全二叉树:
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; }
以上所述就是小编给大家介绍的《判断搜索二叉树、完全二叉树》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 你有没有想过: Java 虚拟机是如何判断两个对象是否相同的?判断的流程是什么?
- iOS Rotation 判断
- 判断是否是闰年
- 数值类型(金额)限制与判断
- ansible笔记(26):条件判断
- 判断Golang接口是否实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动Web前端高效开发实战
iKcamp / 电子工业出版社 / 2017-9 / 89.00
移动互联网的兴起和快速普及,给前端开发人员带来了前所未有的新机遇。移动Web前端技术作为整个技术链条中重要的一环,却乱象丛生。《移动Web前端高效开发实战:HTML 5 + CSS 3 + JavaScript + Webpack + React Native + Vue.js + Node.js》是一本梳理移动前端和Native客户端技术体系的入门实战书。 《移动Web前端高效开发实战:HTML......一起来看看 《移动Web前端高效开发实战》 这本书的介绍吧!