首页 > 编程知识 正文

二叉树后序遍历例题,以层序列出二叉树节点

时间:2023-05-03 22:29:30 阅读:15162 作者:4094

1 .假设二叉树根节点所在层数为1,则层序遍历是指从一个二叉树根节点开始,首先访问第一层根节点,然后从左到右访问第二层节点,然后访问第三层节点

2 .层序遍历是广度优先遍历,需要排队实现。

想法:

1 .首先需要依赖队列

2 .首先加入头部节点,在队列不为空时弹出元素,并记录当前弹出的元素

3 .如果确定弹出元素的左子项不是空的,则进入列

4 .判断弹出元素的右子项不为空,判断为不为空并进入队列

代码实现:

publicvoidlevelordertraversal (treenode1root ) if ) root==null ) { return; }队列treenode1queue=new linked list (; queue.offer (根); while (! queue.isEmpty () ({ TreeNode1 cur=queue.poll ); system.out.println(cur.data '; if(cur.left!=null}{queue.offer(cur.left ); (if ) cur.right!=null}{queue.offer(cur.right ); }}二叉树层序遍历高级版:牛客网/leet代码

主题说明:

给出二叉树,并返回该二叉树层序遍历的结果。 (从左向右,一层一层地遍历)。

例如:

给定的二叉树由{3、9、20、#、#、15、7}、

这种二叉树层序遍历的结果

[

[3]、

[ 9,20 ],

[ 15,7 ]

]

思维分析:

需要依靠队列来完成

1 .首先判断从节点是否为空节点,如果为空则直接返回空列表,如果不为空则进行排队

2 .每一层都需要一个数组来存储每一层的数据,所有层都需要新的数组列表。

3 .每层放置完数据后,记录当前队列的大小。 然后,当数据变为0时,每层数据的排出和存储都完成

4 .然后当队列不为空时,跳出队列最上面的元素进行记录。 此时,将其放入list1,使队列长度为-1。

5 .此时,判断记录左右节点是否为空,如果不为空则进行排队

6 .各层结束后,将各层的数据list1添加到list中,最后返回list

代码实现

publiclistlistintegerlevelorder (treenode1root )//首先listlistintegerlistlistintegerlist=new ArrayList ); //确定根节点是否为空if (根==空) /如果为空,则直接返回空列表返回列表列表; //首先,将节点排队,然后在list1中排队1队列=新链接列表(; //首先对根节点进行排队的queue.offer(root ); //队列不空时,弹出头部元素并记录。 //然后查看他的左节点和右节点是否为空,如果不为空则排队//判断条件可以获取队列是否为空while(queue.isEmpty () ) /每层放入的数量,作为每层结束的判断依据,int //因为每一层是一个列表,所以所有层都有一个list1在new上出现,并将每一层的数据放入list1的ListInteger list1=new ArrayList (; wile(size0) { TreeNode1 cur=queue.poll ); //记录队列的要素list1.add(cur.data )//将各层中弹的数据放入list1中的size--; //每次取完数据时判断----//cur的左if(cur.left!=null}{queue.offer(cur.left ); (if ) cur.right!=null}{queue.offer(cur.right ); }//并且,一次一层的数据的总列表1包含在列表中list.add(list1); }返回列表; }

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