一雪前耻,抱着试试看的态度,打开了《Same Tree》,本来是想,首先判断
两颗树的各个相同位置得结点值是否相同,然后判断两颗树得结构是否相似得,
但是后来一想,如果两颗树得结构不同的话,那相同结点得值肯定就会不一样啦,
所以,先序遍历二叉数,一旦遇到结点值不相等,就直接pass了,但是一定要注意一些特殊情况,
(我会在代码中指出)还是那句话,
“想奋斗,什么时候也不晚!!!”,与君共勉!
代码实现:
class Solution { public: bool isSameTree(TreeNode *p, TreeNode *q) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if (isSameNode(p,q)) { return true; } return false; } bool isSameNode(TreeNode *root1,TreeNode *root2) { /* 下面得两点一定要注意, 本人在此处错了三次!!! 一个字,矬!!! */ // 如果两棵树都为空 if (!root1 && !root2) return true; // 只有一棵树为空 if (!root1 && root2) return false; if (root1 && !root2) return false; // 两棵树都不为空 if (root1 -> val == root2 -> val) { // 判断左右子树是否想等 if (isSameNode(root1 -> left,root2 -> left) && isSameNode(root1 -> right,root2 -> right)) return true; return false; } return false; } };
转载于:https://blog.51cto.com/zhujifang/1380262