求解二叉树高度,探索该过程中递归返回值

求解二叉树高度,探索该过程中递归返回值

 

package treepack;

public class Edge {
	// 首先定义一个节点
	public static class Node {
		int value;
		Node right;
		Node left;

		public Node(int value) {
			this.value = value;
		}
	}

	// 求解树的高度
	public static int heigh(Node head, int n) {

		// 向下递归,找到最后,停止条件如下:
		if (head == null) {
			//不断向下找,先找左边,再找右边,所以会最先找到最左边,
			//只要找到有null,就会返回一次。从图中看出,一共这里返回了10次

			System.out.println(n + "  null的位置");
			return n;
		}
		int heigh1 = heigh(head.left, n + 1);
		int heigh2 = heigh(head.right, n + 1);
		n = Math.max(heigh1, heigh2);
//不停向右移动,移动一下,就和最近的数据做比较,返回较大值,
//这个最大值会保留,向上返回,用于下一次比较
		System.out.println(n + "   ");
		return n;
	}

	public static void main(String[] args) {
		Node tree = new Node(1);
		tree.left = new Node(2);
		tree.right = new Node(3);
		tree.left.left = new Node(4);
		tree.left.right = new Node(5);
		tree.right.left = new Node(6);
		tree.right.left.left = new Node(7);
		tree.left.left.left = new Node(8);
		tree.left.left.left.left = new Node(9);
		int heigh = Edge.heigh(tree, 0);
		System.out.println("最后的返回值:" + heigh);

	}

}

控制台:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值