Leetcode 二叉树篇 226.翻转二叉树

  1. 翻转二叉树
    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
    示例 1:
    输入:root = [4,2,7,1,3,6,9]
    输出:[4,7,2,9,6,3,1]
    示例 2:
    输入:root = [2,1,3]
    输出:[2,3,1]
    示例 3:
    输入:root = []
    输出:[]
    提示:
    树中节点数目范围在 [0, 100] 内
    -100 <= Node.val <= 100

本题只用迭代法。虽然我没看出来不过这东西应该是前序遍历

代码:
/**

  • Definition for a binary tree node.

  • struct TreeNode {

  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    
  • };
    /
    class Solution {
    public:
    TreeNode
    invertTree(TreeNode* root) {
    stack <TreeNode*> s;
    if(root==NULL) return root;
    s.push(root);
    while(!s.empty()){
    TreeNode* node=s.top();
    s.pop();
    TreeNode* mid;
    if(node->right){
    s.push(node->right);
    mid=node->right;
    }
    if(node->left){
    s.push(node->left);
    if(mid){
    node->right=node->left;
    node->left=mid;
    }else{
    node->right=node->left;
    }
    }

     }
     return root;
    

    }
    };
    写了第一把,报错溢出,突然想起来可以用swamp(一直用python都忘了)
    class Solution {
    public:
    TreeNode* invertTree(TreeNode* root) {
    stack <TreeNode*> s;
    if(root==NULL) return root;
    s.push(root);
    while(!s.empty()){
    TreeNode* node=s.top();
    s.pop();
    swap(node->left,node->right);
    if(node->right) s.push(node->right);
    if(node->left) s.push(node->left);

     }
     return root;
    

    }
    };
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值