https://leetcode.com/problems/same-tree/
My answer / AC
/**
* 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} p
* @param {TreeNode} q
* @return {boolean}
*/
var isSameTree = function(p, q) {
let larr = [];
let rarr = [];
let dfs = function(node, arr) {
if(!node) {
arr.push(null);
return;
}
arr.push(node.val);
dfs(node.left, arr);
dfs(node.right, arr);
}
dfs(p, larr);
dfs(q, rarr);
return larr.toString() === rarr.toString();
};
Recap
- 较为简单的深度遍历,重点在于对于递归的把握以及特殊情况
if(!node)
的处理
- 一般思路:
- 先在外面定义好要处理的数组
- 在函数内部定义inline递归函数
- 考虑特殊情况(一般是在末端)
- 按照深度遍历来递归调用
网友评论