肯定前序遍历
/**查找根节点到某一节点的路径*/
void findPath(TreeNode root, TreeNode target, ArrayList<TreeNode> list){
if(root == null)
return;
// 把当前结点加入到路径当中来
list.add(root);
if(root == target){
System.out.println("find");
return;
}
if(root.left != null){
findPath(root.left,target,list);
}
if(root.right != null){
findPath(root.right,target,list);
}
//在返回到父节点之前,在路径上删除当前节点,这里非常重要!!!
list.remove(list.size()-1);
}
如果求根节点到所有子节点的路径:
添加
ArrayList<ArrayList<TreeNode>> ls = new ArrayList<>();
更改结束条件
// 如果为叶子结点
if(root.left==null && root.right==null){
ls.add(new ArrayList<>(list));
}
未测试,思想如上。
参考:https://blog.csdn.net/liuyi1207164339/article/details/50908308
https://www.cnblogs.com/wjf0/p/5873902.html
https://blog.csdn.net/anoobcoder/article/details/79318932 **