当前位置: 首页 > 后端技术 > Java

LeetCode-222-NumberofNodesinaCompleteBinaryTree

时间:2023-04-01 16:44:45 Java

NumberofNodesinaCompleteBinaryTree题目描述:给定一棵完全二叉树的根节点root,求树中的节点数。完全二叉树的定义如下:在一棵完全二叉树中,除了最底层的节点可能未被填充外,每一层的节点数都达到最大值,并且最底层的节点全部集中在层的最左边位置。如果最底层是第h层,那么这一层包含1~$2^{h}$个节点。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:二叉树的层序遍历对于二叉树的层序遍历,将二叉树按照从上到下,从左到右的顺序遍历,利用了先入先出的特点队列。具体处理过程如下:首先,如果根节点为空,则为空树,表示没有节点,直接返回0;否则,先将根节点加入队列,然后遍历队列中的节点,直到队列为空,遍历过程记录中的节点个数。最后返回节点数。importcom.kaesar.leetcode.TreeNode;importjava.util.LinkedList;importjava.util.Queue;publicclassLeetCode_222{/***二叉树级顺序遍历**@paramroot*@return*/publicstaticintcountNodes(TreeNoderoot){//如果根节点为空,则为空树,表示没有节点,直接返回0if(root==null){return0;}//利用队列的先进先出特性对二叉树进行分层顺序遍历Queuenodes=newLinkedList<>();//首先将根节点作为第一层添加到队列中nodes.add(root);//记录二叉树的节点个数intcount=0;//遍历队列中的节点,直到队列为空while(!nodes.isEmpty()){count++;TreeNodecur=nodes.poll();if(cur.left!=null){nodes.add(cur.left);}if(cur.right!=null){nodes.add(cur.right);}}返回计数;}publicstaticvoidmain(String[]args){/***测试用例:*1*23*456*/TreeNoderoot=newTreeNode(1);root.left=newTreeNode(2);root.right=newTreeNode(3);root.left.left=newTreeNode(4);根.左。右=新树节点(5);root.right.left=newTreeNode(6);//预期输出:6System.out.println(countNodes(root));}}【每日留言】做人做人,雷雷陨落,如日月