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

    Invert a binary tree.

         4
       /   
      2     7
     /    / 
    1   3 6   9

    to

         4
       /   
      7     2
     /    / 
    9   6 3   1

    Trivia:
    This problem was inspired by this original tweet by Max Howell:

    Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
    /**
     * 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;
    }
  • 相关阅读:
    hdu4020简单想法题
    hdu4020简单想法题
    hdu4284 dfs+floyd
    hdu4284 dfs+floyd
    hdu4282 x^z+y^z+x*y*z=k 解的个数
    hdu4282 x^z+y^z+x*y*z=k 解的个数
    hdu4279 找规律+小想法
    hdu4279 找规律+小想法
    hdu3665 水最短路
    hdu3665 水最短路
  • 原文地址:https://www.cnblogs.com/codelu/p/4590844.html
Copyright © 2011-2022 走看看