题解 | #牛群的最大高度#
牛群的最大高度
https://www.nowcoder.com/practice/f745023c5ac641c9914a59377dacdacf
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型
*/
public int findMaxHeight (TreeNode root) {
// write code here
if(root==null)
return 0;
int val=root.val;
int left=findMaxHeight(root.left);
if(left>val)
val=left;
int right=findMaxHeight(root.right);
if(right>val)
val=right;
return val;
}
}
使用java解决本题
知识点:二叉树
思路:
首先,判断根节点是否为空。如果为空,表示树为空树,直接返回高度为0。
val中,作为当前节点的高度(假设根节点的高度为1)。findMaxHeight函数,计算左子树的最大高度,并将结果保存在变量left中。left大于当前节点的高度val,更新val为left,表示左子树的高度更大。findMaxHeight函数,计算右子树的最大高度,并将结果保存在变量right中。right大于当前节点的高度val,更新val为right,表示右子树的高度更大。val,即为二叉树的最大高度。
总结起来,代码通过递归的方式遍历二叉树的节点,从而得到左子树和右子树的最大高度,并比较得到整个树的最大高度。代码的思路比较清晰,但可以通过优化来使得代码更加简洁和高效。
查看1道真题和解析