数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)結(jié)構(gòu)與算法之判斷一棵樹(shù)是否為搜索二叉樹(shù)、判斷一棵樹(shù)是否是完全二叉樹(shù)
目錄
1. 判斷一棵樹(shù)是否為搜索二叉樹(shù)
我們?cè)O(shè)置一個(gè)變量記錄當(dāng)前值,和后一個(gè)需要打印的值比較,如果前一個(gè)值大于后一個(gè)值,即不是搜索二叉樹(shù),則返回false。改后的搜索二叉樹(shù)代碼為:
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;}另外一種搜索二叉樹(shù)的代碼
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. 判斷一棵樹(shù)是否是完全二叉樹(shù)
思路
流程
代碼實(shí)現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构与算法之二叉树的序列化和反序列化
- 下一篇: 数据结构与算法之完全二叉树的节点个数