LeetCode第226题:翻转二叉树

LeetCode第226题

题目详述

翻转一棵二叉树。

解法一

递归。时间复杂度:O(n),空间复杂度:O(n)

class Solution {
	public TreeNode invertTree(TreeNode root) {
		if (root == null) return null;
		TreeNode left = invertTree(root.left);
		TreeNode right = invertTree(root.right);
		root.right = left;
		root.left = right;
		return root;
	}
}

解法二

队列迭代。时间复杂度:O(n),空间复杂度:O(n)

class Solution {
	public TreeNode invertTree(TreeNode root) {
		if (root == null) return null;
		Queue<TreeNode> queue = new LinkedList<>();
		queue.add(root);
		while (!queue.isEmpty()) {
			TreeNode current = queue.poll();
			TreeNode temp = current.left;
			current.left = current.right;
			current.right = temp;
			if (current.left != null) queue.add(current.left);
			if (current.right != null) queue.add(current.right); 
		}
		return root;
	}
}
发布了40 篇原创文章 · 获赞 0 · 访问量 638

猜你喜欢

转载自blog.csdn.net/weixin_42610002/article/details/104412186