二叉樹的鏡像

 

題目:操作給定的二叉樹,將其變換爲源二叉樹的鏡像。

二叉樹的鏡像定義:源二叉樹 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5  7 9 11
    	鏡像二叉樹
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11 9 7  5

分析:從最底層開始交換一棵樹(樹的子樹)的左右子樹,因爲交換的是結點指針,因此當上層交換時會自動將下層已經交換過的結點帶過來。

//交換一棵樹的左右子樹(遞歸,即從最底層開始交換)
    //由於交換的是結點,因此交換上層結點時,自動會將下層已經交換過的結點帶過來
    void exchange(TreeNode* root)
    {
        if(root == NULL)
            return;
        exchange(root->left);
        exchange(root->right);
        
        TreeNode* tmp=root->left;
        root->left=root->right;
        root->right=tmp;
    }
    
    void Mirror(TreeNode *pRoot) {
        if(pRoot==nullptr)
            return;
        
        exchange(pRoot);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章