FYI

树形构造

public class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) {        val = x;    }}

遍历的办法

@Testpublic 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;}