226.翻转二叉树
链接:226.翻转二叉树
难度:Easy
标签:树、深度优先搜索、广度优先搜索、二叉树
简介:翻转一棵二叉树。
题解 1 - 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;
}
题解 2 - 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;
}
题解 3 - 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;
	}
题解 4 - 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;
}
题解 5 - 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;
    }
}
题解 6 - 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;
}