zoukankan      html  css  js  c++  java
  • 反转二叉树

    尴尬了,昨天被问,突然不知道咋搞。

    二叉树遍历,前中后,是以root为准的前中后

    所以反转二叉树用后续遍历就好

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
    

    递归

    struct TreeNode* invertTree(struct TreeNode* root)
    {
        struct TreeNode *node;
    
        if (root == NULL)
            return root;
    
        node = invertTree(root->left);
        root->left = invertTree(root->right);
        root->right = node;
        return root;
    }
    

    非递归

    struct TreeNode* invertTree(struct TreeNode *root)
    {
        struct TreeNode *node, *tmp;
        Stack treeStack;
    
        if (root == NULL)
            return root;
    
        stack_init(&treeStack, NULL);
    
        stack_push(&treeStack, root);
        while (treeStack.size > 0)
        {
            stack_pop(&treeStack, &node);
    
            tmp = node->left;
            node->left = node->right;
            node->right = tmp;
    
            if (node->left)
                stack_push(&treeStack, node->left);
            if (node->right)
                stack_push(&treeStack, node->right);
        }
        stack_destory(&treeStack);
    
        return root;
    }
    
  • 相关阅读:
    通过 Web 服务共享 Windows 剪贴板
    bzoj 1007[HNOI2008]水平可见直线 半平面交
    c#读写INI
    c#获得伪静态页码
    c#判断部分
    c#网络通信
    C# 转换函数
    c#文件操作
    c#进制转换
    服务器端异步接受SOKCET请求
  • 原文地址:https://www.cnblogs.com/juandx/p/6553220.html
Copyright © 2011-2022 走看看