How to Mirror a Binary Tree?
- 时间:2020-10-12 15:56:23
- 分类:网络文摘
- 阅读:163 次
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) —
推荐阅读:Design a Logger Rate Limiter in C++/Java C++ Coding Exercise: Smallest Range of Array Coding For Profit: 4 Types Of Websites To Consider Building How to Compute the Projection Area of 3D Shapes? How To Find The Ideal Monitor For Coders? How to Partition an Array Into Three Parts With Equal Sum? Compute the Sum of Even Numbers After Queries How to Compute Nested List Weight Sum of Any Arrays? 7 Laws Every Blogger Must Know to Avoid Lawsuits New App Protects You From Becoming A Victim Of White Collar Crim
- 评论列表
-
- 添加评论