打印结点和等于某个值的所有路径

来源:互联网 发布:大数据分析工作 编辑:程序博客网 时间:2024/06/05 12:04


public  void findSum(TreeNode node,int sum,int []path)
{
if(node==null)
{
return ;
}
/*将当前结点插入路径
*/
path[level]=node.data;
/*查找以此为终止且总和为sum的路径*/
int t=0;
for(int i=level;i>=0;i--)
{
t+=path[i];
if(t==sum)
{
print(path,i,level);
}
}
/*
查找此结点之下的结点
*/
findSum(node.left,sum,path.level+1);
findSum(node.right,sum,path,level+1);
/*
从路径中移除当前结点
*/
path[level]=Integer.MIN_VALUE;

}
public void findSum(TreeNode node,int sum)
{
int depth=depth(node);
int []path=new int[depth];
findSum(node,sum,path,0);
}
public static void print(int [] path,int start,int end)
{
for(int i=start;i<=end;i++)
{
   System.out.print(path[i]+"");
}
System.out.println();
}
public int depth(TreeNode node)
{
if(node==null)
return 0;
else
{
return 1+Math.max(depth(node.left),depth(node.right));
}
}


0 0
原创粉丝点击