当前位置: 移动技术网 > IT编程>开发语言>Java > Java二叉树路径和代码示例

Java二叉树路径和代码示例

2019年07月19日  | 移动技术网IT编程  | 我要评论

给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。

一个有效的路径,指的是从根节点到叶节点的路径。

样例

给定一个二叉树,和 目标值 = 5:

  1
 / \
 2 4
 / \
 2 3

返回:

[
 [1, 2, 2],
 [1, 4]
]

代码如下:

/**
 * definition of treenode:
 * public class treenode {
 *  public int val;
 *  public treenode left, right;
 *  public treenode(int val) {
 *   this.val = val;
 *   this.left = this.right = null;
 *  }
 * }
 */
public class solution {
	/**
  * @param root the root of binary tree
  * @param target an integer
  * @return all valid paths
  */
	public list<list<integer>> binarytreepathsum(treenode root, int target) {
		// write your code here
		return dfs(root,new arraylist<integer>(),0,new arraylist<list<integer>>(),target);
	}
	public list<list<integer>> dfs(treenode root,list<integer> node, int sum, list<list<integer>> paths,int target)
	 {
		if(root==null)
		  {
			return new arraylist<list<integer>>();
		}
		list<list<integer>> path=new arraylist<list<integer>>();
		if(root.left!=null)
		  {
			list<integer> nodes=new arraylist<integer>();
			if(node!=null)
			  {
				nodes.addall(node);
			}
			nodes.add(root.val);
			list<list<integer>> temp=dfs(root.left,nodes,sum+root.val,paths,target);
			if(temp!=null)
			   {
				path.addall(temp);
			}
		}
		if(root.right!=null)
		  {
			list<integer> nodes=new arraylist<integer>();
			if(node!=null)
			  {
				nodes.addall(node);
			}
			nodes.add(root.val);
			list<list<integer>> temp=dfs(root.right,nodes,sum+root.val,paths,target);
			if(temp!=null)
			   {
				path.addall(temp);
			}
		}
		if(root.left==null&&root.right==null)
		  {
			list<integer> nodes=new arraylist<integer>();
			if(node!=null)
			  {
				nodes.addall(node);
			}
			nodes.add(root.val);
			if(sum+root.val==target)
			   {
				path.add(nodes);
			} else{
				path=new arraylist<list<integer>>();
			}
		}
		return path;
	}
}

referance

总结

以上就是本文关于java二叉树路径和代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网