本文主要是介绍Day36 代码随想录打卡|二叉树篇---翻转二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目(leecode T226):
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
方法:
迭代法
翻转二叉树,即从根节点开始,一一交换每个节点的左右孩子节点,然后递归此过程,将根节点的左右孩子节点再分别作为参数传入交换节点的函数中。重复此过程,直到结束。就完成了二叉树的翻转。
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if (root == NULL) return root;swap(root->left, root->right); // 根节点invertTree(root->left); // 左孩子节点invertTree(root->right); // 右孩子节点return root;}
};
递归法解决此问题只需在出栈或队列处理节点时,交换该节点的左右孩子节点即可。但中序遍历不适用,其他都可以。因为中序遍历有时会把一个节点交换两次导致结果不对。
这篇关于Day36 代码随想录打卡|二叉树篇---翻转二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!