Invert a binary tree.
Example
1 1
/ \ / 2 3 => 3 2
/ 4 4
Challenge
Do it in recursion is acceptable, can you do it without recursion?
1. 递归
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: a TreeNode, the root of the binary tree * @return: nothing */ public void invertBinaryTree(TreeNode root) { // write your code here if(root == null) return; invertBinaryTree(root.left); invertBinaryTree(root.right); TreeNode temp = root.right; root.right = root.left; root.left = temp; return; } }
2. 非递归
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: a TreeNode, the root of the binary tree * @return: nothing */ public void invertBinaryTree(TreeNode root) { // write your code here if(root == null) return; LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); while(!queue.isEmpty()){ TreeNode p = queue.poll(); if(p.left != null) queue.offer(p.left); if(p.right != null) queue.offer(p.right); TreeNode temp = p.right; p.right = p.left; p.left = temp; } return; } }
时间: 2024-11-05 14:15:22