Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode226翻转二叉树
一、题目描述:
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
示例1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
示例2:
输入:root = [2,1,3]
输出:[2,3,1]
示例3:
输入:root = []
输出:[]
二、思路分析:
可以使用递归处理,每个节点的左子树和右子树需要交换位置,那么定义一个只交换当前节点子树的方法。递归的去交换其子树节点。
三、代码:
/**
* 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) {
// 递归处理
// 递归的终止条件
if(root===null) {
return null;
}
// 每项递归的逻辑:交换子树位置,子树再去交换自己的子树
[root.left, root.right] = [invertTree(root.right), invertTree(root.left)]
return root
};
leetcode104二叉树最大深度
一、题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]。最大深度为3
3
/ \
9 20
/ \
15 7
二、递归方法:
/**
* 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 {number}
*/
var maxDepth = function(root) {
// 递归/递推
if (root==null) {
return 0
}
return Math.max(maxDepth(root.left), maxDepth(root.right))+1
};
三、思考:迭代法