How to Mirror a Binary Tree?
- 时间:2020-10-12 15:56:23
- 分类:网络文摘
- 阅读:245 次
Given a binary tree like this:
8
/ \
6 10
/ \ / \
5 7 9 11
Your task is to mirror it which becomes this:
8
/ \
10 6
/ \ / \
11 9 7 5
The most elegant algorithm to mirror a binary tree is using recursion. We can recursively mirror left and right trees respectively and then swap the left and right trees.
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Solution { public void Mirror(TreeNode root) { if (root == null) return; // make left tree also a mirror recursively Mirror(root.left); // make right tree also a mirror tree. Mirror(root.right); // swap left and right trees TreeNode t = root.left; root.left = root.right; root.right = t; } } |
public class Solution {
public void Mirror(TreeNode root) {
if (root == null) return;
// make left tree also a mirror recursively
Mirror(root.left);
// make right tree also a mirror tree.
Mirror(root.right);
// swap left and right trees
TreeNode t = root.left;
root.left = root.right;
root.right = t;
}
}The time complexity is O(N) where each node will be visited constant time, and the space complexity through calling stacks via recursion is O(N)=O(h) which is the height of the tree.
It is said that this is one of the Google’s interview question, a simple one though.
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:Algorithm to Find Minimum Removals to Make Valid Parentheses Greedy Algorithm to Validate Stack Sequences Why is Web Hosting Important for Bloggers? How to Write More Local Content (and Why You Should) 8 Ways To Monetize Your Blog Without Driving Away Visitors/Users 5 Ways Bloggers Can Find Marketing Inspiration 5 Helpful Sales Enablement Blogs For Empowering Salespeople How to Plan for Your Financial Future as a Content Marketer Reasons You Should Invest in SEO 7 Reasons Website Maintenance Is Crucial
- 评论列表
-
- 添加评论