這個題相對來說是比較簡單的,思路為:利用先序遍歷來每個點進行判斷
struct TreeNode {
int value;
TreeNode *leftTreeNode;
TreeNode *rightTreeNode;
};
bool isSameTree(TreeNode *firstTreeNode, TreeNode *secondTreeNode) {
if (firstTreeNode == NULL && secondTreeNode == NULL) { // 兩個點都為空
return true;
} else if (firstTreeNode == NULL || secondTreeNode == NULL) { // 其中一個點為空
return false;
} else { // 兩個點都不為空
if (firstTreeNode->value == secondTreeNode->value) {
return isSameTree(firstTreeNode->leftTreeNode, secondTreeNode->leftTreeNode) && isSameTree(firstTreeNode->rightTreeNode, secondTreeNode->rightTreeNode);
} else {
return false;
}
}
}