How to Mirror a Binary Tree?
- 时间:2020-10-12 15:56:23
- 分类:网络文摘
- 阅读:167 次
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) —
推荐阅读:某银行有两种储蓄计划——单利和复利的问题 大院里养了三种动物。每只小山羊戴3个铃铛,每只狗戴1个铃铛 某本书正文所标注的页码共用了2989个阿拉伯数字,问这本书的正文一共有多少页? 有两棵古槐树,500年前有个学者说 高中生儿童节作文 勿以恶小而为之勿以善小而不为 美丽的长岛作文 月是故乡明 我的调查报告作文 校园烟酒浅谈作文900字
- 评论列表
-
- 添加评论