C/C++教程

Leetcode NO.226 Invert Binary Tree 翻转二叉树

本文主要是介绍Leetcode NO.226 Invert Binary Tree 翻转二叉树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

      • 1.问题描述
      • 2.测试用例
          • 示例 1
      • 3.代码
          • 节点信息
          • 1.前序反转
            • code
            • 复杂度
          • 2.后序反转
            • code
            • 复杂度

1.问题描述

翻转一棵二叉树。

2.测试用例

示例 1
输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9 

输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

3.代码

节点信息
public class TreeNode {
    public int val;
    public TreeNode left;
    public TreeNode right;


    public TreeNode(int val) {
        this.val = val;
    }

    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
1.前序反转
code
public TreeNode invertTreeWithPreOrder(TreeNode root) {
    if (root == null) {
        return null;
    }
    TreeNode tmp = root.left;
    root.left = root.right;
    root.right = tmp;
    invertTreeWithPreOrder(root.left);
    invertTreeWithPreOrder(root.right);
    return root;
}
复杂度
* 时间复杂度 O(n)
* 空间复杂度 O(logn)
2.后序反转
code
public TreeNode invertTreeWithPostOrder(TreeNode root) {
    if (root == null) {
        return null;
    }
    invertTreeWithPostOrder(root.left);
    invertTreeWithPostOrder(root.right);
    TreeNode tmp = root.left;
    root.left = root.right;
    root.right = tmp;
    return root;
}
复杂度
* 时间复杂度 O(n)
* 空间复杂度 0 (logn)
这篇关于Leetcode NO.226 Invert Binary Tree 翻转二叉树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!