欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java二叉树路径和代码示例

程序员文章站 2023-12-11 16:56:52
给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 样例 给定一个二叉树,和 目标值 = 5:...

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

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

样例

给定一个二叉树,和 目标值 = 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二叉树路径和代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

上一篇:

下一篇: