您的位置 首页 java

算法:二叉树的之字形层序遍历

描述

给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},

算法:二叉树的之字形层序遍历


该二叉树之字形层序遍历的结果是

代码:

 import java.util.*;

public class Solution {

    public ArrayList<ArrayList<Integer>> zigzagLevelOrder (TreeNode root) {
        // write code here
         ArrayList<ArrayList< Integer >> list=new ArrayList<ArrayList<Integer>>();
        if(root==null){
            return list;
        }
        Queue<TreeNode> queue=new LinkedList<>();
        queue.add(root);
        int level=1;
        
        while(!queue.isEmpty()){
            int count=queue.size(); //当前层的节点个数
            
            ArrayList<Integer> newList=new ArrayList<Integer>();
            for(int i=0;i<count;i++){
                TreeNode newnode=queue.poll();
                if(level%2==0){
                    newList.add(0,newnode.val); //偶数层放到队头
                }else{
                    newList.add(newnode.val);
                }
                
                if(newnode.left !=null){
                    queue.offer(newnode.left);
                }
                if(newnode.right !=null){
                    queue.offer(newnode.right);
                }
            }
            level++;
            list.add(newList);
        }
        return list;
    }
}  

文章来源:智云一二三科技

文章标题:算法:二叉树的之字形层序遍历

文章地址:https://www.zhihuclub.com/197825.shtml

关于作者: 智云科技

热门文章

网站地图