1. 程式人生 > >【leetcode】103.(Medium)Binary Tree Zigzag Level Order Traversal

【leetcode】103.(Medium)Binary Tree Zigzag Level Order Traversal

解題思路:
維護兩個棧,輪番記錄每一層的結點

時間複雜度:O(n)
空間複雜度:O(n)


提交程式碼:

class Solution {
	    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
	        List<List<Integer>> res=new ArrayList<List<Integer>>();
	        if(root==null)	return res;
	        
	        Stack<
TreeNode>
s1=new Stack<>(); Stack<TreeNode> s2=new Stack<>(); s1.push(root); while(s1.size()!=0||s2.size()!=0) { List<Integer> level1=new ArrayList<Integer>(); while(s1.size()!=0) { TreeNode tmp=s1.pop(
); level1.add(tmp.val); if(tmp.left!=null) s2.push(tmp.left); if(tmp.right!=null) s2.push(tmp.right); } if(level1.size()!=0) res.add(level1); List<Integer> level2=new ArrayList<>()
; while(s2.size()!=0) { TreeNode tmp=s2.pop(); level2.add(tmp.val); if(tmp.right!=null) s1.add(tmp.right); if(tmp.left!=null) s1.add(tmp.left); } if(level2.size()!=0) res.add(level2); } return res; } }

執行結果:
在這裡插入圖片描述