////////////////////////////////////////////////// ///////////////////////////////////
// 1. название бинарного изображения 19
// выполнить функцию , двоичный вход, выход функции на ее зеркало
// временной сложности: о (п), пространственная сложность: O (1) -> но некоторая рекурсивная параметр функции , как потребление
аннулированию MirrorOfBinaryTree (BinarySeachTreeNode < INT > * pRoot) { если (NULL == pRoot || (NULL == pRoot-> m_pLeftNode && NULL == pRoot-> m_pRightNode)) { вернуться ; } // 交换左右节点 BinarySeachTreeNode < INT > * pTmpNode = pRoot-> m_pLeftNode; pRoot -> m_pLeftNode = pRoot-> m_pRightNode; pRoot -> m_pRightNode = pTmpNode; если (pRoot-> m_pLeftNode) { MirrorOfBinaryTree (pRoot -> m_pLeftNode); } Если (pRoot->m_pRightNode) { MirrorOfBinaryTree (PROOT -> m_pRightNode); } } // бинарное изображение: нерекурсивна // временная сложность: О (п), пространственная сложность: O (n-) недействительными MirrorOfBinaryTree_1 (BinarySeachTreeNode < INT > * PROOT) { IF (PROOT || == NULL (NULL pRoot- ==> == NULL && m_pLeftNode pRoot-> m_pRightNode)) { возвращение ; } очереди <BinarySeachTreeNode < INT > *> stQueue; stQueue.push (PROOT); // очереди FIFO это время (! stQueue.empty ()) { pRoot = stQueue.front (); stQueue.pop (); // 交换子节点 BinarySeachTreeNode < INT > * pTmpNode = pRoot-> m_pLeftNode; pRoot -> m_pLeftNode = pRoot-> m_pRightNode; pRoot -> m_pRightNode = pTmpNode; если (pRoot-> m_pLeftNode) { stQueue.push (pRoot -> m_pLeftNode); } Если (pRoot-> m_pRightNode) { stQueue.push (pRoot -> m_pRightNode); } } } недействительным MirrorOfBinaryTreeTestFunc () { соиЬ << " \ п \ п --------------- MirrorOfBinaryTreeTestFunc Начало --------------> " << епсИ; INT aiArray [] = { 8 , 6 , 10 , 5 , 7 , 9 , 11 , 12 }; INT Ilen = SizeOf (aiArray) / SizeOf ( INT ); TRAVERSAL_ARRAY (aiArray, Ilen); // 1.建立一个二叉树 CBinarySearchTree < INT > * Ptree =новый CBinarySearchTree < INT > (); если (NULL == Ptree) { возврата ; } Для ( INT I = 0 ; г <Ilen; я ++ ) { Ptree -> Вставить (aiArray [I]); } Ptree -> Прослеживание (); Ptree -> Прослеживание (TRAVERSAL_TYPE_RECUR_PRE_ORDER); // 2.二叉树镜像 Const BinarySeachTreeNode < INT > * pRoot = pTree-> GetTreeRootNode (); MirrorOfBinaryTree (const_cast<BinarySeachTreeNode < INT > *> (pRoot)); // 去Const属性 pTree-> Traversal (); MirrorOfBinaryTree_1 (const_cast <BinarySeachTreeNode < INT > *> (pRoot)); Ptree -> Прослеживание (); // 3.释放内存 SAVE_DELETE (Ptree); соиЬ << " \ п \ п --------------- MirrorOfBinaryTreeTestFunc End --------------> " << епсИ; }