FYI
树形结构
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
遍历的方法
@Test
public void test() {
TreeNode root, TreeNode p;
// TODO 初始化root, p;
Stack<TreeNode> pParents = new Stack<>();
getParents(root, p, pParents);
// p的父节点以及全部祖先节点都存放在pParents中了。
}
public boolean getParents(TreeNode root, TreeNode p, Stack<TreeNode> stack) {
if (root == null) {
return false;
}
// System.out.println("root:" + root.val);
if (root == p) {
stack.push(root);
// 找到了
return true;
}
stack.push(root);
if(getParents(root.left, p, stack)){
return true;
}
if(getParents(root.right, p, stack)){
return true;
}
// 没找到节点,还原现场
stack.pop();
return false;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。