1. 程式人生 > 其它 >二叉樹的映象——劍指Offer|簡單題|JZ18

二叉樹的映象——劍指Offer|簡單題|JZ18

技術標籤:劍指offer演算法

題目線上測試連線:二叉樹的映象_牛客網 (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;

先儲存著,還望知道原因的大佬不吝賜教,回頭明白了再來補充