【发布时间】:2020-10-28 11:21:19
【问题描述】:
我正在尝试打印所有无法通过二分搜索算法搜索到的二叉树节点。由于 BST 也是基于二分搜索算法,所以我试图打印不符合 BST 结构的节点。
以下代码 sn-p 在右叶值大于根的根的情况下失败,例如:
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);
}
}
【问题讨论】:
标签: java binary-tree binary-search