[Java] 103. Zigzag sequence traversal of binary tree-recursive set combination, get started soon! ! !

Given a binary tree, return the zigzag hierarchical traversal of its node values. (That is, the next layer is traversed from left to right, then from right to left, and so on, alternating between layers).

For example:
Given a binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

Return the zigzag sequence traversal as follows:

[
[3],
[20,9],
[15,7]
]

public static List<List<Integer>> zigzagLevelOrder(TreeNode root) {
    
    
		List<List<Integer>> list=new ArrayList<List<Integer>>();
		LevelOrder(root, list,0);//从第一层开始
		return list;

    }
	public static void LevelOrder(TreeNode root,List<List<Integer>> list,int level) {
    
    
	      if(root==null) {
    
    
	    	  return ;
	      }
	      if(list.size()==level) {
    
    //list.size()是第几层减一
	    	  list.add(new ArrayList<>());//每层都创建一个ArrayList集合
	      }
	      if(level%2==0) {
    
    //偶数层元素位置顺序往后添加
	    	  list.get(level).add(root.val);
	      }else {
    
    //奇数层元素位置顺序往前插入
	    	  list.get(level).add(0,root.val);
	      }
	      LevelOrder(root.left,list,level+1);
	      LevelOrder(root.right,list,level+1);
		
	}

Guess you like

Origin blog.csdn.net/qq_44461217/article/details/111564875