分析:
实质上就是深搜,但是与简单的递归不同的是我们对一个链表来进行递归的,所以要注意我们的下一跳与我们链表的结构相关联
/**
*@author yangyvting
*@date 2019年5月4日
*/
package 数结构;
public class Main {
public static int max = 0;
public static void main(String[] args) {
//1.生成树
treeNode parent = new treeNode(1);
treeNode l1 = new treeNode(1);
treeNode l2 = new treeNode(34);
treeNode r1 = new treeNode(4);
treeNode r2 = new treeNode(33);
treeNode r3 = new treeNode(4);
parent.left = l1;
l1.left = l2;
l1.right = null;
l2.left = null;
l2.right = null;
parent.right = r1;
r1.left = r2;
r1.right = r3;
r2.left = null;
r2.right = null;
r3.left = null;
r3.right = null;
//2.开始调用函数
Solve(0,parent);
//3.输出
System.out.println(max);
}
private static int Solve(int n, treeNode parent) {
//1.跳出递归的条件
if(parent == null) {
if(n > max) {
max = n;
}
return n;
}
//2.下一跳
int le = Solve(n + parent.data, parent.left);
int ri = Solve(n + parent.data, parent.right);
return max(le,ri);
}
private static int max(int le, int ri) {
if(le > ri) {
return le;
}
return ri;
}
}
class treeNode{
int data;
treeNode left;
treeNode right;
treeNode(int data){
this.data = data;
}
}
运行结果:
38