LeetCode写题历程——226.翻转二叉树
2019-02-22 11:27
267 查看
1.题目描述
翻转一棵二叉树。
2.解题思路
(1)一开始我的思路是直接对原二叉树进行翻转,但是一直没有想到好的解决方法。
(2)无法对原二叉树进行操作,索性就构建一棵新的二叉树,该二叉树满足题设条件即可。对于新二叉树,要求每一个节点的左子节点是原二叉树对应位置节点的右子节点,每一个节点的右子节点是原二叉树对应位置节点的左子节点。
(3)按照前序遍历的顺序来构建新二叉树。在构建的过程中,我们需要动态地开辟存储空间,因此使用到了"new"这个关键字。
(4)整个过程同样用到了递归,边界条件就是传入的root节点为NULL。
/** * 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* BuildTree(TreeNode* root,TreeNode* invertRoot) { if(root==NULL) return invertRoot; invertRoot = new TreeNode(root->val); if(invertRoot->left==NULL&&root->right!=NULL) invertRoot->left=BuildTree(root->right,invertRoot->left); if(invertRoot->right==NULL&&root->left!=NULL) invertRoot->right=BuildTree(root->left,invertRoot->right); return invertRoot; } TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; TreeNode* invertRoot= NULL; return BuildTree(root,invertRoot); } };
相关文章推荐
- 【LeetCode】226. Invert Binary Tree 二叉树翻转
- LeetCode226--翻转二叉树
- [LeetCode] 226 翻转二叉树
- leetcode 226 Invert Binary Tree 翻转二叉树
- 翻转二叉树(leetcode-226)
- leetcode 226 Invert Binary Tree 翻转二叉树
- leetcode 226 Invert Binary Tree 翻转二叉树
- LeetCode 226 Invert Binary Tree(翻转二叉树)
- Leetcode 226.翻转二叉树
- leetcode - 226 - 翻转二叉树
- leetcode 226. Invert Binary Tree 反转二叉树 + DFS深度优先搜索
- leetcode 226. Invert Binary Tree(倒置一个二叉树,递归,非递归)
- 【LeetCode-面试算法经典-Java实现】【226-Invert Binary Tree(反转二叉树)】
- [数据结构][Leetcode]翻转二叉树
- 226.leetcode Invert Binary Tree(easy)[二叉树 递归]
- leetCode之翻转二叉树
- LeetCode 226. Invert Binary Tree(反转二叉树)
- LeetCode写题历程——257. 二叉树的所有路径
- [LeetCode] Invert Binary Tree 翻转二叉树
- leetcode-226. Invert Binary Tree 二叉树、递归,交换两个变量的值