Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:linux wget 命令 编辑:程序博客网 时间:2024/06/11 05:52
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {          // Start typing your Java solution below          // DO NOT write main() function          ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();          if(root == null) return result;          LinkedList<TreeNode> level = new LinkedList<TreeNode>();          level.add(root);          boolean flag = true;          while(!level.isEmpty()) {              int size = level.size();              ArrayList<Integer> subResult = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  TreeNode tmp = level.remove();                  if(tmp.left != null) level.add(tmp.left);                  if(tmp.right != null) level.add(tmp.right);                  if(flag == true) subResult.add(tmp.val);                  else subResult.add(0, tmp.val);              }              flag = (flag == true) ? false : true;              result.add(subResult);          }          return result;      }      public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {        // Start typing your Java solution below        // DO NOT write main() function        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();          if(root == null)return result;          LinkedList<TreeNode> level = new LinkedList<TreeNode>();          level.add(root);          level.add(null);          boolean flag = true;        while(!level.isEmpty()) {              ArrayList<Integer> sub = new ArrayList<Integer>();              while(!level.isEmpty()) {                  TreeNode tmp = level.remove();                  if(tmp == null) {                      if(!level.isEmpty()) level.add(null);                      break;                  }else {                      if(flag == true) sub.add(tmp.val);                      else sub.add(0, tmp.val);                    if(tmp.left != null) level.add(tmp.left);                      if(tmp.right != null) level.add(tmp.right);                  }              }              result.add(sub);            flag = (flag == true) ? false : true;        }          return result;     }


原创粉丝点击