Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ //方法1:递归 /*public class Solution { public boolean isSymmetric(TreeNode root) { return root == null || isSymmetricHelp(root.left, root.right); } private boolean isSymmetricHelp(TreeNode left, TreeNode right){ if (left == null || right == null){ return left == right; } if (left.val != right.val){ return false; } return (isSymmetricHelp(left.left, right.right) && isSymmetricHelp(left.right, right.left)); } }*/ //方法2:非递归 public class Solution { public boolean isSymmetric(TreeNode root) { if (root == null){ return true; } Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(root.left); stack.push(root.right); while (!stack.empty()){ TreeNode p1 = stack.pop(); TreeNode p2 = stack.pop(); if (p1 == null && p2 == null){ continue; } if (p1 == null || p2 == null || p1.val != p2.val){ return false; } stack.push(p1.left); stack.push(p2.right); stack.push(p1.right); stack.push(p2.left); } return true; } }