数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
數(shù)據(jù)結(jié)構(gòu)與算法之判斷一棵樹是否為搜索二叉樹、判斷一棵樹是否是完全二叉樹
目錄
1. 判斷一棵樹是否為搜索二叉樹
我們設(shè)置一個變量記錄當前值,和后一個需要打印的值比較,如果前一個值大于后一個值,即不是搜索二叉樹,則返回false。改后的搜索二叉樹代碼為:
public static boolean isBST1(Node head) {if (head != null) {Stack<Node> stack = new Stack<>();int pre = 0;while (!stack.isEmpty() || head != null) {if (head != null) {stack.push(head);head = head.left;} else {head = stack.pop();if (pre<=head.value){pre = head.value;}else {return false;}head = head.right;}}}return true;}另外一種搜索二叉樹的代碼
public static boolean isBST2(Node head) {if (head == null) {return true;}boolean res = true;Node pre = null;Node cur1 = head;Node cur2 = null;while (cur1 != null) {cur2 = cur1.left;if (cur2 != null) {while (cur2.right != null && cur2.right != cur1) {cur2 = cur2.right;}if (cur2.right == null) {cur2.right = cur1;cur1 = cur1.left;continue;} else {cur2.right = null;}}if (pre != null && pre.value > cur1.value) {res = false;}pre = cur1;cur1 = cur1.right;}return res;}2. 判斷一棵樹是否是完全二叉樹
思路
流程
代碼實現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法之二叉树的序列化和反序列化
- 下一篇: 数据结构与算法之完全二叉树的节点个数