18910140161

Java实现求二叉树的高度

顺晟科技

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));

}

}

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航