首页 > 编程知识 正文

二叉树的层次遍历java,二叉树按层输出

时间:2023-05-04 00:39:15 阅读:14429 作者:4168

层序遍历思路:树空时回空。 否则,从树的第一层开始,也就是从根节点开始,从上到下逐层遍历。

1 .二叉树层序横移——剑指进刀32-

从上到下,从左到右打印二叉树,返回一维数组int[] res。

类解决方案{

公共int [ ] level order (趋势根)。

if(root==null )返回新int [0];

queue q=新链接列表(;

q .添加(根);

列表列表=new ArrayList (;

while (! q.isEmpty () ) }

TreeNode node=q.poll (;

list.add(node.val );

if(node.left!=null q.add (node.left );

if(node.right!=null q.add (node.right );

}

int[]RES=newint[list.size(];

for(intI=0; i res.length; I )

RES[I]=list.get(I;

返回RES;

}

}

2 .二叉树层序遍历——剑指offer32-/LeetCode102

从上到下,从左到右打印二叉树,返回List res。

类解决方案{

publiclistlevelorder (趋势根)。

List res=new ArrayList (;

queue q=新链接列表(;

if (路线!=null ) q.add (根);

while (! q.isEmpty () ) }

列表列表=new ArrayList (;

for(intI=q.size ); i 0; I---- ) {

TreeNode node=q.poll (;

list.add(node.val );

if(node.left!=null q.add (node.left );

if(node.right!=null q.add (node.right );

}

RES.add (列表);

}

返回RES;

}

}

3 .二叉树层序遍历——剑指offer32-/LeetCode103

从上到下,用zigzag方式打印,返回List res。

类解决方案{

publiclistzigzaglevelorder (趋势根) {

List res=new ArrayList (;

queue q=新链接列表(;

if (路线!=null ) q.add (根);

while (! q.isEmpty () ) }

链接列表列表=new linked list (;

for(intI=q.size ); i 0; I---- ) {

TreeNode node=q.poll (;

if(RES.size(%2==0) list.addlast ) node.val );

elselist.addfirst(node.val );

if(node.left!=null q.add (node.left );

if(node.right!=null q.add (node.right );

}

RES.add (列表);

}

返回RES;

}

}

4 .二叉树层序遍历——LeetCode107

从下到上,从左到右打印二叉树,返回List res。

类解决方案{

publiclistlevelorderbottom (趋势根)。

List res=new ArrayList (;

queue q=新链接列表(;

if (路线!=null ) q.add (根);

while (! q.isEmpty () ) }

列表列表=new ArrayList (;

for(intI=q.size ); i 0; I---- ) {

TreeNode node=q.poll (;

list.add(node.val );

if(node.left!=null q.add (node.left );

if(node.right!=null q.add (node.right );

}

//插头法

RES.add(0,list );

}

返回RES;

}

}

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