跳到主要内容

226.翻转二叉树

链接:226.翻转二叉树
难度:Easy
标签:树、深度优先搜索、广度优先搜索、二叉树
简介:翻转一棵二叉树。

题解 1 - java

  • 编辑时间:2020-02-19
  • 内存消耗:39.7MB
  • 编程语言:java
  • 解法介绍:前序遍历
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root==null)return root;
TreeNode tmpNode=root.left;
root.left=root.right;
root.right=tmpNode;
invertTree(root.left);
invertTree(root.right);
return root;
}
}

题解 2 - java

  • 编辑时间:2020-02-19
  • 内存消耗:39.8MB
  • 编程语言:java
  • 解法介绍:后序遍历
public TreeNode invertTree(TreeNode root) {
if(root==null)return root;
invertTree(root.left);
invertTree(root.right);
TreeNode tmpNode=root.left;
root.left=root.right;
root.right=tmpNode;
return root;
}

题解 3 - java

  • 编辑时间:2020-02-19
  • 内存消耗:40.2MB
  • 编程语言:java
  • 解法介绍:中序遍历
public TreeNode invertTree(TreeNode root) {
if(root==null)return root;
invertTree(root.left);
TreeNode tmpNode=root.left;
root.left=root.right;
root.right=tmpNode;
invertTree(root.left);
return root;
}

题解 4 - java

  • 编辑时间:2020-02-19
  • 内存消耗:40.5MB
  • 编程语言:java
  • 解法介绍:层序遍历
public TreeNode invertTree(TreeNode root) {
if(root==null)return root;
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
TreeNode tmpNode=node.left;
node.left=node.right;
node.right=tmpNode;
if(node.left!=null) {
queue.offer(node.left);
}
if(node.right!=null) {
queue.offer(node.right);
}
}
return root;
}

题解 5 - typescript

  • 编辑时间:2020-09-16
  • 执行用时:72ms
  • 内存消耗:37.6MB
  • 编程语言:typescript
  • 解法介绍:递归。
function invertTree(root: TreeNode | null): TreeNode | null {
if (root === null) return null;
const left = invertTree(root.left);
const right = invertTree(root.right);
root.right = left;
root.left = right;
return root;
}

题解 6 - c

  • 编辑时间:2021-11-27
  • 内存消耗:5.9MB
  • 编程语言:c
  • 解法介绍:递归。
struct TreeNode* invertTree(struct TreeNode* root){
if (!root) return root;
struct TreeNode *left = root->left, *right = root->right;
// 翻转右树赋值给左点
root->left = invertTree(right);
// 翻转左树赋值给右点
root->right = invertTree(left);
return root;
}