自学内容网 自学内容网

【LeetCode】【算法】226. 翻转二叉树

LeetCode 226. 翻转二叉树

题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

思路

思路:翻转二叉树实际上就是递归地翻转左二叉,然后递归地翻转右二叉,再在中间处理左右二叉翻转,就是左右中,使用后序遍历即可。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {
        // 应该是DFS后回溯,后序遍历,左右中(在中交换)

        // 终止条件
        if (root == null) return null;

        // 后序遍历
        TreeNode leftNode = invertTree(root.left);
        TreeNode rightNode = invertTree(root.right);
        // 中间节点交换
        TreeNode tmp = leftNode;
        root.left = rightNode;
        root.right = tmp;
        // 交换结束返回root
        return root;
    }
}

原文地址:https://blog.csdn.net/passer__jw767/article/details/143531018

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!