二叉樹的映象——劍指Offer|簡單題|JZ18
阿新 • • 發佈:2021-01-14
題目線上測試連線:二叉樹的映象_牛客網 (nowcoder.com)
題目描述:
將給定的二叉樹左右對稱映象
思路:向求解藍框二叉樹的映象,可以先求將子節點交換,然後再去求子節點的映象,直到當前節點為葉子節點
總結來說,還是分治的思想,將大問題化解為小問題,求整個樹的映象,我可以先求解子樹的映象,子樹的映象可以先求解子子樹的映象.....直到返回根節點
程式碼:
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ void Mirror(TreeNode *pRoot) { if(pRoot->left==nullptr) return; TreeNode *temp; temp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = temp; Mirror(pRoot->left); Mirror(pRoot->right); }
但是這裡存在一個記憶體的問題,答案正確,方法與他們通過的也無差距,
只是我判斷的是否由子節點,沒有即返回;別人判斷的當前節點是否存在,不存在即返回
/*** 判斷子節點 ***/
if(pRoot->left == nullptr)
return;
/*** 判斷當前節點 ***/
if(pRoot == nullptr)
return;
先儲存著,還望知道原因的大佬不吝賜教,回頭明白了再來補充