俄语网站制作,四川城乡与住房建设部网站,iis网站服务器安全隐患分析,站长之家查询目录
使用函数实现
使用双端队列实现 请实现一个函数按照之字形顺序打印二叉树#xff0c;即第一行按照从左到右的顺序打印#xff0c;第二层按照从右到左的顺序打印#xff0c;第三行再按照从左到右的顺序打印#xff0c;其他行以此类推。 例如: 给定二叉树: [3,9,20,nu…目录
使用函数实现
使用双端队列实现 请实现一个函数按照之字形顺序打印二叉树即第一行按照从左到右的顺序打印第二层按照从右到左的顺序打印第三行再按照从左到右的顺序打印其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回其层次遍历结果
[[3],[20,9],[15,7]
]提示
节点总数 1000
使用函数实现
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/
class Solution {ListListInteger resnew ArrayList();public ListListInteger levelOrder(TreeNode root) {helper(root,0);return res;}private void helper(TreeNode root,int level){if(rootnull)return;if(res.size()level){res.add(new ArrayList());}if(level%20){res.get(level).add(root.val);}else{res.get(level).add(0,root.val);}helper(root.left,level1);helper(root.right,level1);}
}
使用双端队列实现
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/
class Solution {public ListListInteger levelOrder(TreeNode root) {boolean isEven false;//从1开始第一行不是偶数if(rootnull) return new ArrayList();ListListInteger ans new ArrayList();QueueTreeNode queue new LinkedList();queue.offer(root);while(true){int size queue.size();LinkedListInteger item new LinkedList();for(int i0;isize;i){root queue.poll();if(!isEven) item.addLast(root.val);else item.addFirst(root.val);if(root.left!null) queue.offer(root.left);if(root.right!null) queue.offer(root.right);}isEven !isEven;ans.add(item);if(queue.isEmpty()) break;}return ans;}
}