分治 递归问题
- 递归函数定义
明确函数的使命 明确原问题与子问题 要兼顾原问题与子问题
使命: 这个函数就是用来将传入的节点的两个子节点进行互换位置的
原问题: 将节点的两个子节点互换位置
子问题: 将节点的两个子节点互换位置
- 基础情况处理
数据规模较小时直接返回答案
当前节点不存在的时候 直接rentun
- 递归调用
可以称之为 超级操作 (涉及向下递归)
我们要将这个超级操作看成一个整体 , 忽略里面的细节
相信他一定能够完成使命
当前节点互换完后, 调用dfs函数, 将子节点的两个节点互相调换位置。
- 递推到当前层
可以称之为 微操作 (不涉及向下递归)
微操作就是将两个节点互换位置。
解法一
/*
* @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