zoukankan      html  css  js  c++  java
  • LeetCode OJ:Invert Binary Tree(反转二叉树)

    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.

    反转二叉树,递归的执行反转就行了:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     TreeNode* invertTree(TreeNode* root) {
    13         if(!root) return NULL;
    14         swap(root->left, root->right);
    15         root->left = invertTree(root->left);
    16         root->right = invertTree(root->right);
    17         return root;
    18     }
    19 };

     java版本的如下所示(由于不方便使用swap,所以这里采取的另一种的方式):

     1 public class Solution {
     2     public TreeNode invertTree(TreeNode root) {
     3         if(root == null)
     4             return root;
     5         TreeNode leftNew = invertTree(root.right);
     6         TreeNode rightNew = invertTree(root.left); 
     7         root.left = leftNew;
     8         root.right = rightNew;
     9         return root;
    10     }
    11 }
  • 相关阅读:
    Golang学习
    Golang学习
    基础知识
    Golang学习
    基础知识
    hyper-v server 2016安装,客户端远程管理
    inotifywait命令
    CENTOS 7发送邮件测试
    NFS学习
    awk命令
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4905483.html
Copyright © 2011-2022 走看看