• 剑指 Offer 32


    问题描述

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

    示例

    给定二叉树: [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

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

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
    if(root==null)
    			 return new ArrayList<List<Integer>>();
    		 	List<List<Integer>> res=new ArrayList<List<Integer>>();
    		 	//正着先右,倒着先左
    		 	List<TreeNode> objective=new ArrayList<TreeNode>();
    		 	objective.add(root);
    		 	List<Integer> t=new ArrayList<Integer>(1);
    		 	t.add(root.val);
    		 	res.add(t);
    		 	List<TreeNode> negetive=new ArrayList<TreeNode>();
    		 	while(objective.size()>0) {
    		 	List<Integer> t1=new ArrayList<Integer>();
    		 	for(int i=objective.size()-1;i>=0;i--) {
    		 		if(objective.get(i).right!=null) {
    		 			t1.add(objective.get(i).right.val);
    		 			negetive.add(objective.get(i).right);
    		 		}
    		 		if(objective.get(i).left!=null) {
    		 			t1.add(objective.get(i).left.val);
    		 			negetive.add(objective.get(i).left);
    		 		}
    		 	}
    		 	if(t1.size()>0)
    		 	res.add(t1);
    		 	objective.clear();
    		 	if(negetive.size()>0) {
    			 	List<Integer> t2=new ArrayList<Integer>();
    			 	for(int i=negetive.size()-1;i>=0;i--) {
    			 		if(negetive.get(i).left!=null) {
    			 			t2.add(negetive.get(i).left.val);
    			 			objective.add(negetive.get(i).left);
    			 		}
    			 		if(negetive.get(i).right!=null) {
    			 			t2.add(negetive.get(i).right.val);
    			 			objective.add(negetive.get(i).right);
    			 		}
    			 	}
    			 	if(t2.size()>0)
    			 	res.add(t2);
    			 	negetive.clear();
    		 	}
    		 	}
    		 	return res;
        }
    }
    

  • 相关阅读:
    词法分析程序~总结
    0916 词法分析程序
    0909 编译原理
    1029 文法分析
    0916 编译原理第二次上机作业
    0909 编译原理第一次上机作业
    复利计算之回顾并总结这三次实验
    复利计算之说明代码运行结果和功能点
    操作系统之实验0 了解和熟悉操作系统
    12-16 实验四 递归下降语法分析程序设计
  • 原文地址:https://www.cnblogs.com/code-fun/p/14347753.html
Copyright © 2020-2023  润新知