原题
给你两棵二叉树的根节点 p
和 q
,编写一个函数来检查这两棵树是否相同。
假如两棵树结构相同,节点值相同,则认为它们是相同的。
输入:p = [1,2,3], q = [1,2,3] 输出:true
输入:p = [1,2], q = [1,null,2] 输出:false
输入:p = [1,2,1], q = [1,1,2] 输出:false
题解
- 深度优先搜索
/** * 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) {
return isSame(p,q); }; // 先序遍历 function isSame(p,q) {
if(p == null && q == null) return true; if((!p && q) || (p && !q)) return false; if(p.val !== q.val) return false; // 需保证 p 和 q 都不是 null,否则报错 let ll = isSame(p.left, q.left); let rr = isSame(p.right, q.right); return rr && ll; }