二叉树的镜像

    xiaoxiao2021-03-25  94

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5

    class Solution { public: void Mirror(TreeNode *pRoot) { TreeNode *tmp; if(pRoot){ tmp=pRoot->left; pRoot->left=pRoot->right; pRoot->right=tmp; Mirror(pRoot->left); Mirror(pRoot->right); } } };

    就是if的条件有区别,不知道下面的为什么错了。

    class Solution { public: void Mirror(TreeNode *pRoot) { TreeNode *tmp; if(pRoot->left||pRoot->right){ tmp=pRoot->left; pRoot->left=pRoot->right; pRoot->right=tmp; if(pRoot->left) Mirror(pRoot->left); if(pRoot->right) Mirror(pRoot->right); } } };

    还有前辈写的非递归版

    //wenyanliu class Solution { public: void Mirror(TreeNode *pRoot) { //非递归实现 if(pRoot==NULL) return; stack<TreeNode*> stackNode; stackNode.push(pRoot); while(stackNode.size()){ TreeNode* tree=stackNode.top(); stackNode.pop(); if(tree->left!=NULL || tree->right!=NULL){ TreeNode *ptemp=tree->left; tree->left=tree->right; tree->right=ptemp; } if(tree->left) stackNode.push(tree->left); if(tree->right) stackNode.push(tree->right); } } };
    转载请注明原文地址: https://ju.6miu.com/read-17629.html

    最新回复(0)