首页 > 编程知识 正文

二叉树深度遍历java,二叉树的深度算法实现

时间:2023-05-06 16:51:31 阅读:166775 作者:3346

以前,我介绍了有关java二叉树中所有距离为k的节点的内容,接下来要传达的是非递归实现java二叉树深度的内容。 一起看看吧。

非递归实现

使用层次遍历算法设置变量level以记录当前节点所在的层次数,将变量last设置为指向当前层次中的最后一个节点,并在处理完当前层次中的最后一个节点后,使level指向一个操作。

如果设置变量cur,则会记录当前层已访问的节点数,并在cur等于last时终止对该层的访问。

阶层遍历求出树的宽度,输出某阶层的节点、某阶层的节点的数量,各阶层的节点的数量也可以使用同样的算法。

树宽:

在树的深度算法之上,添加访问的层节点数量最多的变量max。

在访问每个层之前将max与last进行比较,如果max较大,则max不会改变。 如果max小于last,则将last指定给max。

代码实现: importjava.util.LinkedList;

公共类深度

{

//非递归实现

公共自由深度2 (bi tree root ) )。

{

if (root==空) )。

返回0;

BiTreecurrent=null;

链接列表queue=new linked list (;

queue.offer(root );

intcur,last;

输入级别=0;

while (! queue.isEmpty () )

{

cur=0; //记录遍历此层的节点数

last=queue.size (; (遍历当前层次后,队列内的要素都是下一个层次的要素,队列的长度是该层次的节点数

while(cur

{

current=queue.poll (; //出队组成一个要素

cur;

//将当前节点的左右节点入队((如果存在) ) ) )。

if(current.left!=null )

{

queue.offer(current.left );

}

if(current.right!=null )

{

queue.offer(current.right );

}

}

标签; //每遍历一级1

}

返回级别;

}

publicstaticvoidmain (string [ ] args ) )。

{

BiTreeroot=BiTree.buildTree (;

Deepdeep=newDeep (;

system.out.println (deep.find deep ) root );

system.out.println (deep.find deep1) root );

system.out.println (deep.find deep2) root );

}

}

java二叉树深度的非递归内容介绍到这里了,你都知道吗? 更多

请阅读:

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