面試題28:對稱的二叉樹
阿新 • • 發佈:2018-12-09
題意:請實現一個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。
思路:同時遍歷當前二叉樹和映象二叉樹,考慮節點是否相同。
節點相同1:節點同時為空
節點相同2:節點同時不為空,並且值相同,並且子樹也相同
程式碼:
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :val(x), left(NULL), right(NULL) {} }; class Solution { public: bool isSymmetrical(TreeNode* pRoot) { return gao(pRoot, pRoot); } bool gao(TreeNode* pRoot1, TreeNode* pRoot2) { if (pRoot1 == NULL && pRoot2 == NULL) return true; if (pRoot1 == NULL || pRoot2 == NULL) return false; if (pRoot1 -> val != pRoot2 -> val) return false; return gao(pRoot1->left, pRoot2->right) && gao(pRoot1->right, pRoot2->left); } };