LeetCode 226. 翻转二叉树
程序员文章站
2022-03-03 10:12:36
...
- 题目:
翻转一棵二叉树。
示例:
输入:
4
/
2 7
/ \ /
1 3 6 9
输出:
4
/
7 2
/ \ /
9 6 3 1
- 解题思路
1.递归法
递归出口:到叶子节点,则返回
否则,交换左右子树
代码实现(C++)
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr)
return root;
TreeNode* temp = invertTree(root->right);
root->right = invertTree(root->left);
root->left = temp;
return root;
}
2非递归实现
类似于层次遍历
代码实现
TreeNode* invertTree(TreeNode* root) {
queue<TreeNode*> tree_queue;
if(root == nullptr)
return root;
// TreeNode* cur = root;
tree_queue.push(root); //根节点入队
while(!tree_queue.empty()) //队列不空时执行循环
{
TreeNode* cur = tree_queue.front(); //对头节点
tree_queue.pop(); //出队
TreeNode *temp = cur->left;
cur->left = cur->right;
cur->right = temp;
if(cur->left)
tree_queue.push(cur->left);
if(cur->right)
tree_queue.push(cur->right);
}
return root;
}
下一篇: vue跳转的三种方法
推荐阅读
-
Leetcode算法【114. 二叉树展开为链表】
-
二叉树(LeetCode) C++相关知识代码 系列1
-
荐 八十一、Python | Leetcode 二叉树系列(下篇)
-
#leetcode刷题之路25- k个一组翻转链表
-
LeetCode 151. 翻转字符串里的单词(java代码和思路分析,模拟题)
-
C++实现LeetCode(105.由先序和中序遍历建立二叉树)
-
C++实现LeetCode(889.由先序和后序遍历建立二叉树)
-
C++实现LeetCode(106.由中序和后序遍历建立二叉树)
-
python数据结构(上下翻转二叉树)
-
leetcode 面试题32 (剑指offer)- II. 从上到下打印二叉树 II(python3)