[英]In a binary tree print nodes which can not be searched by binary search
我正在嘗試打印所有無法通過二分搜索算法搜索的二叉樹節點。 由於 BST 也是基於二進制搜索算法,所以我試圖打印不符合 BST 結構的節點。
下面的代碼片段在右葉值大於根的根的情況下失敗,例如:
public class PrintBinarySearchable {
static class Node {
int key, height;
Node left, right;
public Node(int d) {
key = d;
left = right = null;
}
}
Node prev;
private void printSearchable(Node node, Node prev, boolean isRight) {
if (node == null)
return;
if (prev == null)
System.out.print(node.key + " ");
printSearchable(node.left, node, false);
if (!isRight && prev != null && node.key < prev.key)
System.out.print(node.key + " ");
if (isRight && prev != null && node.key > prev.key)
System.out.print(node.key + " ");
printSearchable(node.right, node, true);
}
public static void main(String[] args) {
Node root = new Node(7);
root.left = new Node(2);
root.right = new Node(9);
root.left.left = new Node(1);
root.left.right = new Node(51);
PrintBinarySearchable tree = new PrintBinarySearchable();
tree.printSearchable(root);
}
private void printSearchable(Node root) {
printSearchable(root, null, false);
}
}
這感覺就像一個家庭作業,所以我不會在這里給出完整的答案。 相反,我會給你一些關於如何解決這個問題的提示。
printSearchable(node.right);
和printSearchable(node.left)
內的printSearchable
。 然后你可以調用printSearchable(root)
,它會打印所有節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.