题解 | #牛群的最大高度#
牛群的最大高度
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
,即为二叉树的最大高度。
总结起来,代码通过递归的方式遍历二叉树的节点,从而得到左子树和右子树的最大高度,并比较得到整个树的最大高度。代码的思路比较清晰,但可以通过优化来使得代码更加简洁和高效。