0
点赞
收藏
分享

微信扫一扫

力扣解题 226.翻转二叉树

分治 递归问题

  1. 递归函数定义

明确函数的使命 明确原问题与子问题 要兼顾原问题与子问题

使命: 这个函数就是用来将传入的节点的两个子节点进行互换位置的
原问题: 将节点的两个子节点互换位置
子问题: 将节点的两个子节点互换位置

  1. 基础情况处理

数据规模较小时直接返回答案

当前节点不存在的时候 直接rentun

  1. 递归调用

可以称之为 超级操作 (涉及向下递归)
我们要将这个超级操作看成一个整体 , 忽略里面的细节
相信他一定能够完成使命

当前节点互换完后, 调用dfs函数, 将子节点的两个节点互相调换位置。

  1. 递推到当前层

可以称之为 微操作 (不涉及向下递归)

微操作就是将两个节点互换位置。

解法一

/*
* @lc app=leetcode.cn id=226 lang=javascript
*
* [226] 翻转二叉树
*/


// @lc code=start
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/

/**
* @param {TreeNode} root
* @return {TreeNode}
*/

var invertTree = function(root) {
dfs(root);
return root;
};

/**
* @param {*} root
* @returns
*/

function dfs(root){
if(!root){
return;
}
[root.left, root.right] = [root.right, root.left];
dfs(root.left)
dfs(root.right);
}
// @lc code=end

举报

相关推荐

0 条评论