226Invert Binary Tree
来源:互联网 发布:网络贷款 申请流程 编辑:程序博客网 时间:2024/04/30 14:58
Invert a binary tree.
4 / \ 2 7 / \ / \1 3 6 9to
4 / \ 7 2 / \ / \9 6 3 1Trivia:
This problem was inspired by this original tweet by Max Howell:
解析:左右翻转二叉树,记得有一个题目左右镜像树,与此题目的解题思路类似。左右翻转二叉树交换左右子树即可。
/** * 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: //solve1 /*TreeNode* invertTree(TreeNode* root) { if (root == NULL) return NULL; TreeNode *temp = root -> left; root -> left = root -> right; root -> right = temp; invertTree(root -> left); invertTree(root -> right); return root; }*/ //solve2 /*TreeNode* invertTree(TreeNode* root) { if (root == NULL) return NULL; TreeNode *temp = root -> left; root -> left = invertTree(root -> right); root -> right = invertTree(temp); return root; }*/ //solve3 use nonrecurse /*TreeNode* invertTree(TreeNode *root) { queue<TreeNode*> que; if (root) que.push(root); while (!que.empty()) { TreeNode *top = que.front(); que.pop(); if (top -> left) que.push(top -> left); if (top -> right) que.push(top -> right); TreeNode *temp = top -> left; top -> left = top -> right; top -> right = temp; } return root; }*/ //solve4 TreeNode* invertTree(TreeNode *root) { if (root == NULL) return root; swap(root -> left, root -> right); invertTree(root -> left); invertTree(root -> right); return root; }};
solve1和solve2使用递归方法,每次调换左右子树后,又对左右子树做递归。
solve3使用非递归方法,对二叉树进行BFS,对根结点进行左右子树调换后,使用队列保存需要翻转(非NULL)的子树根结点。
solve4主要是对根结点左右的调换使用swap(TreeNode* &a, TreeNode* &b), 起初我以为这样的写法会报错,后来慢慢尝试发现可以使用。swap(root -> left, root -> right), 只是交换了root这个节点中left指针和right指针的值,是left指针指向right之前指向的对象,right指针指向left之前指向的对象,不管这个对象是非空还是空,都是成立的。
0 0
- 226Invert Binary Tree
- 226Invert Binary Tree
- 226 Invert Binary Tree
- 226 Invert Binary Tree
- 226 Invert Binary Tree
- [226]Invert Binary Tree
- 226 Invert Binary Tree
- 226 Invert Binary Tree
- 226Invert Binary Tree
- [226] Invert Binary Tree
- Leetcode[226]-Invert Binary Tree
- LeetCode 226 Invert Binary Tree
- Invert Binary Tree - LeetCode 226
- leetcode[226]:Invert Binary Tree
- leetcode 226: Invert Binary Tree
- Leetcode 226 Invert Binary Tree
- leetcode-226-Invert Binary Tree
- leetcode 226 :Invert Binary Tree
- 试题推荐系统
- POJ1091 跳蚤 素因子分解+容斥原理
- github入门和GitHub for Windows教程整理
- GoldenGate的ADD SCHEMATRANDATA命令研究
- Spring学习笔记(8)----属性注入的方式
- 226Invert Binary Tree
- 机器学习实战之决策树(1)---ID3算法与信息熵,基尼不纯度
- Android Activity管理类,管理Activity和退出应用
- linux下关于后台任务和前台任务之间的且切换命令小结
- 一个任务调度问题
- Spring学习笔记(9)----让Spring自动扫描和管理Bean
- GRE作文备考——经济对环境的影响
- 常用linux命令
- 机器学习中的相似性度量