【发布时间】:2018-01-21 03:34:09
【问题描述】:
我想编写一个函数,它返回一串 0 和 1 来表示从根节点到特定节点 p 的路径,其中 0 表示向左,1 表示向右。
__3__
/ \
4 5
/ \ /
9 2 1
2 应该返回“01”
public String traverse(TreeNode root, TreeNode p,String s) {
if (root == p) return s;
if (root.left != null) return traverse(root.left,p,s + "0");
if (root.right != null) return traverse(root.right,p,s+ "1");
return "-1";
}
这是我对递归方式的想法,但是当它到达叶子时它只返回-1,而我希望它继续递归。如,要找到 2,它会尝试 3 -> 4-> 9,但不会继续 4 的递归,而是在 9 处停止。我该怎么办?
【问题讨论】:
-
您是否在 IDE 调试器中单步调试您的代码?你发现了什么?
-
基本上它停在最左边的叶子,在示例中是 9。我希望它识别叶子 9 不是我正在寻找的节点 2,并继续递归右边是 4,但最后我需要一个 return 声明。
标签: java string recursion binary-tree