我想知道這是否正確有效地檢查BST。確定BST的高效算法
我的代碼是確定,如果樹是二叉搜索樹。請隨時糾正,但它必須是下面的方法,並被要求檢查樹中的每個節點一次。
需要使用這種方法叫:public static boolean isBST(BinaryTree<String> tree)
下面是我的算法和代碼:
public static boolean isBST(BinaryTree<String> tree)
{
return isBST(tree.root);
}
private static boolean isBST(BinaryNode<String> root) {
if(root==null)
return true;
else{
if(root.getLeftChild().getData().compareTo(root.getData())<0&&root.getRightChild().getData().compareTo(root.getData())>0)
return true;
else
return false;
}
}
我拿着仿製藥,也是一個靜態方法工作的這種做法的原因。
您需要檢查leftChild和rightChild是否都是BST。這在代碼中仍然缺失。換句話說,你需要一個遞歸 – gefei
不。這種方法是錯誤的。我建議你閱讀這篇文章 - http://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/ – Bhoot
你的算法是錯誤的,看看'{left:{value:5,left:null,right:null},right:{value 7,left:{value:10,left:null,right:null},right:null}' –