最大数形支路和

 分析:

实质上就是深搜,但是与简单的递归不同的是我们对一个链表来进行递归的,所以要注意我们的下一跳与我们链表的结构相关联

/**
*@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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值