二叉树-226.翻转链表-力扣(LeetCode)
一、题目解析
翻转可以理解为树的左右子树交换,从根到叶子节点,但是这里交换的是链接的指针,而不是单纯的交换值,当出现nullptr时,也是可以交换链接的,交换值的话就不行了。
二、算法原理
依旧的递归,但是我们需要更改指针的链接,所以我们需要保存递归时左右指针,用于交换链接。
根据递归顺序,先将左树交换,然后交换右数,最后将根的链接改变,原来的左变为翻转后的右,右边同理。
三、代码示例
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(root == nullptr) return nullptr;TreeNode* left = invertTree(root->left);TreeNode* right = invertTree(root->right);root->left = right;root->right = left;return root;}
};
四、递归展开图
看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!