顺晟科技
2021-06-16 10:38:49
249
package com.qiye
导入Java。util。LinkedList
导入Java。util。排队;
类别TreeNode {
int val=0;
左侧树节点=空
TreeNode right=null
}
公共类解决方案2 {
/**
* 递归求解
* 返回树的高度
* @param root TreeNode类树根节点
* @return int整型
*/
public int GetreeHeight1(TreeNode root){
if(root==null){
返回0;
}
int left=GetreeHeight1(根。左);
int right=GetreeHeight1(根。右);
向左向右返回?左1 :右1;
}
/***
* 非递归求解
* @param root
* @返回
*/
public int getterheight(TreeNode根){
if(root==null){
返回0;
}
//使用数数进行层级统计。
//下一个计数保存的是每层遍历后新增到队列中的元素数量。
//如果计数=下一个计数就说明将该层遍历完了深度下一个计数等于队列中保存的下一层的所有结点数目。
//以此类推
int deep=0,count=0,NextCount=1;
QueueTreeNode queue=new LinkedList();
排队。add(root);
while(!queue.isEmpty()){
TreeNode TreeNode=队列。poll();
计数;
if(treeNode.left!=null){
排队。add(TreeNode。左);
}
if(treeNode.right!=null){
排队。add(TreeNode。右);
}
if(count==nextCount){
下一个计数=队列。size();
count=0;
深;
}
}
深归;
}
公共静态void main(String[] args) {
TreeNode root=new TreeNode();
TreeNode left=new TreeNode();
TreeNode right=new TreeNode();
TreeNode left _ left=new TreeNode();
TreeNode left _ right=new TreeNode();
TreeNode right _ left=new TreeNode();
TreeNode right _ right=new TreeNode();
root.right=右
root.left=左
根。向左。left=left _ left
根。向左。右=左_右;
根。没错。left=right _ left
根。没错。right=right _ right
系统。出去。println(新解决方案2()。gettrehhate 1(root));
System.out.println(新解决方案2()。getter height(root));
}
}
04
2022-06
04
2022-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06