首页 > 编程知识 正文

二叉树深度的算法,图的广度遍历相当于二叉树的

时间:2023-05-04 22:42:48 阅读:166772 作者:374

通过优先深度和优先广度求出二叉树深度的二叉树深度是从根节点到最远的叶节点的最长路径上的节点数

二叉树结构:

公共类treenode { int val; 树左; 树轻; treenode { } treenode { intval } { this.val=val; }treenode(intval,TreeNode left,TreeNode right ) { this.val=val; this.left=left; this.right=right; (1)深度以左右子树的最大深度l和r为优先,其二叉树的最大深度为max(L,r )1) max(L,r ) 1,但是左右子树的最大深度可以同样计算到空节点。

publicintmaxdepth(treenoderoot ) if ) root==null { return 0; (intleft=maxdepth ) root.left; intright=maxdepth(root.right ); return(leftright )? 左:右(1; )2)广度优先广度遍历队列包含“当前层次的所有节点”。 每次扩展下一个层次结构时,必须取出队列中的所有节点进行扩展。 这样,每次扩展完成时,队列都会包含当前层次结构中的所有节点。 也就是说,我们每次进行一个扩展,最后用一个变量level textit{level} level来维持扩展的次数。 此二叉树的最大深度为leveltextit

class solution { public int max depth (treenode root ) if ) root==null } { return 0; } queuetreenodequeue=newlinkedlisttreenode (; queue.offer(root ); //存储在第1层节点,即根节点int level=0中//当前层数while (! queue.isEmpty () /如果队列为空,则为所有节点int size=queue.size ); //记录当前层中的节点数//将当前层中所有节点的左节点和右节点入队到while(size0) ({ TreeNode node=queue.poll ); //将一个节点出队,并将该节点的左右非空子节点入队到if(node.left )!=null}{queue.offer(node.left ); (if ) node.right!=null}{queue.offer(node.right ); (size----); //当前层的节点数减} level; //层数加1 )1)返回级别; }参考链接

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。