劍指offer_18:二叉樹的映象
阿新 • • 發佈:2020-12-16
請完成一個函式,輸入一個二叉樹,該函式輸出它的映象。
例如輸入:
映象輸出:
示例 1:
輸入:root = [4,2,7,1,3,6,9]
輸出:[4,7,2,9,6,3,1]
限制:
0 <= 節點個數 <= 1000
1、遞迴
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode mirrorTree(TreeNode root) { if(root==null) return null; TreeNode node=root.left; root.left=root.right; root.right=node; mirrorTree(root.left); mirrorTree(root.right); return root; } }
2、DFS
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode mirrorTree(TreeNode root) { if(root==null) return null; Stack<TreeNode> stack=new Stack<>(); stack.push(root); while(!stack.isEmpty()){ TreeNode node=stack.pop(); if(node.left!=null) stack.push(node.left); if(node.right!=null) stack.push(node.right); TreeNode temp=node.left; node.left=node.right; node.right=temp; } return root; } }
3、BFS
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode mirrorTree(TreeNode root) { if(root==null) return null; Queue<TreeNode> queue=new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()){ TreeNode node=queue.poll(); TreeNode t=node.left; node.left=node.right; node.right=t; if(node.left!=null) queue.offer(node.left); if(node.right!=null) queue.offer(node.right); } return root; } }