java刷题--226翻转二叉树

Posted Anrys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题--226翻转二叉树相关的知识,希望对你有一定的参考价值。

java刷题--226翻转二叉树

题目

在这里插入图片描述

代码

两种方法都要掌握 因为面试时候不准用递归
递归法

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

迭代法

    public TreeNode invertTree(TreeNode root) {	        
    if (root == null) return null;
    Stack<TreeNode> stack = new Stack<>();
    stack.push(root);	        
    while(!stack.isEmpty()) {
        TreeNode node = stack.pop();
        TreeNode left = node.left;
        node.left = node.right;
        node.right = left;           
        if(node.left != null) {
            stack.push(node.left);
        }
        if(node.right != null) {
            stack.push(node.right);
        }
    }
    return root;
 }

结果

在这里插入图片描述

以上是关于java刷题--226翻转二叉树的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—226. 翻转二叉树(二叉树)—day03

Leetcode刷题100天—226. 翻转二叉树(二叉树)—day03

LeetCode刷题226-简单-翻转二叉树

Leetcode刷题100天—226.翻转二叉树(二叉树)—day06

Leetcode226. 翻转二叉树(JAVA递归)

刷题日记Day1 | 二叉树