/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) { }};*/class Solution { TreeLinkNode* getNode(TreeLinkNode* pNode){ TreeLinkNode*pre = NULL; while (pNode){ pre = pNode; pNode = pNode->left; } return pre; }public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { TreeLinkNode*tmp = pNode->next; if (tmp){//如果有父节点 if (tmp->left == pNode&&pNode->right == NULL){//如果是左节点,就返回他的爸爸 return tmp; } else if (tmp->left == pNode&&pNode->right != NULL){ return getNode(pNode->right); } if (tmp->right == pNode){//如果是右节点,就返回他的右儿子 if (pNode->right){ return getNode(pNode->right); } else if (tmp->next->left == tmp){ return tmp->next; } else if (tmp->next->right == tmp){ return NULL; } } } else{//根节点 return getNode(pNode->right); } return NULL; }};
/*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 isSymmetrical(pRoot,pRoot); } bool isSymmetrical(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 isSymmetrical(pRoot1->left,pRoot2->right) && isSymmetrical(pRoot1->right,pRoot2->left);
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。