【发布时间】:2015-06-16 16:44:15
【问题描述】:
一般的思路是使用递归回溯(BinaryNode,数据为Character)遍历一棵树,找到一个特定的char。该方法将输出从根到数据为指定字符的节点的路径。向左移动意味着路径为 0,向右移动意味着路径为 1。因此,例如,到最上面的根节点的路径是一个空字符串,到左子节点的路径是 0(而 1正确的孩子)。
到目前为止,我有一个递归 void 方法,其基本情况是如果找到匹配项,则方法结束。否则,如果有左孩子,我会再次调用该方法,然后检查和/或调用右孩子。最后一部分是当前根是叶节点,我会修改存储路径以消除最近添加的 0 或 1,然后返回到之前的递归调用。这是我目前所拥有的
//method head
if(c==root.getData()) return;
if(root.hasLeftChild()) //call method with left child as root, and a 0 added to path
//same for right child, only add a 1 instead of a 0
//if leaf node aka neither left or right child, path will now be a substring from 0 to path.length()-1
感谢您的帮助!
【问题讨论】:
标签: java recursion tree backtracking