求二叉树的宽度

来源:互联网 发布:知乎 phyton 编辑:程序博客网 时间:2024/05/18 03:46
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));}}

0 0
原创粉丝点击