我已經創建了一個程序,它將二進制搜索樹中用戶輸入的整數存儲起來,並且具有可以正常工作的前置,後置和有序遍歷的遞歸函數。我想要做的是按順序遍歷樹,並且在每個節點上我想打印存儲在那裏的數字以及節點中左邊和右邊的數字,或者節點是葉節點。 假設用戶進入整數1,4,11和12我希望我的輸出看起來像:打印二進制搜索樹按順序遍歷
1:右子樹:12
4:右子樹:11
11:葉子節點
12:左子樹:4 等
這裏是我使用該函數的代碼,當我跑我得到一個空指針異常的程序。
public synchronized void inorderTraversal()
{ inorderHelper(root); }
//遞歸方法序遍歷
private void inorderHelper(TreeNode node)
{
if (node == null)
return;
inorderHelper(node.left);
System.out.print(node.data + ": Left Subtree " + node.left.data +": Right Subtree " + node.right.data);
inorderHelper(node.right);
}
你的堆棧跟蹤在哪裏? – reto
當您調用'inorderHelper(node.left)'和'inorderHelper(node.right)'時,您正在打印'node.left.data'和'node.right.data'。 – Kevin