226. Invert Binary Tree
2016-07-15 10:31
183 查看
题目:Invert Binary Tree
原题链接Invert a binary tree.
to
Trivia:
This problem was inspired by this original tweet by Max Howell:
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
反转一颗二叉树(即左子树和右子树交换,并且递归下去),最后谷歌还自黑了一把= =。
可以改变一下前序遍历的顺序来完成,即先遍历右子树再遍历左子树,然后新建一棵树按照正常的顺序来遍历建树就行,代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* travel(TreeNode* root){ if(root == NULL) return NULL; TreeNode* node = new TreeNode(root -> val); node -> left = travel(root -> right); node -> right = travel(root -> left); return node; } TreeNode* invertTree(TreeNode* root) { TreeNode* node = travel(root); return node; } };
网上还有一种直接用swap函数来递归的写法,看起来很简洁,一并贴出来:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* invertTree(TreeNode* root) { if(root){ invertTree(root -> left); invertTree(root -> right); std::swap(root -> left, root -> right); } return root; } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解