package tree;
import java.util.LinkedList;
public class WithOfTree {
/**
* 求二叉树的宽度,其实就是层次遍历的改进
* @param args
*/
public static int getWith(TreeNode root){
if(root==null) return 0;
LinkedList<TreeNode> list = new LinkedList<>();
list.add(root);
int maxwith = 1;
int levelcount = 1;
while(!list.isEmpty()){
int i=0;
int count = 0;
while(i<levelcount){
TreeNode newNode = list.removeFirst();
if(newNode.left!=null){
list.add(newNode.left);
count++;
}
if(newNode.right!=null){
list.add(newNode.right);
count++;
}
i++;
}
levelcount = count;
if(levelcount>maxwith){
maxwith = levelcount;
}
}
return maxwith;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.right = new TreeNode(8);
root.right.right.left = new TreeNode(6);
root.right.right.right = new TreeNode(7);
System.out.println(getWith(root));
}
}
求二叉树的宽度
最新推荐文章于 2022-11-06 21:49:35 发布