面试题19二叉树的镜像

来源:互联网 发布:江恩九方图软件 编辑:程序博客网 时间:2024/06/02 13:50

面试题19二叉树的镜像 思路:二叉树的镜像本质上就是交换二叉树的左右子树。画个图示意一下,指针指向根节点。先序遍历二叉树,当根节点为NULL停止遍历,当根节点的左右子树为NULL停止遍历。其余交换左右子树即可


#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;  //面试题19二叉树的镜像 思路:二叉树的镜像本质上就是交换二叉树的左右子树。画个图示意一下,指针指向根节点。先序遍历二叉树,当根节点为NULL停止遍历,当根节点的左右子树为NULL停止遍历。其余交换左右子树即可typedef struct BinaryTreeNode{   int data;   BinaryTreeNode *left,*right;}BinaryTreeNode;void MirrorBinaryTree(BinaryTreeNode *pRoot){    if(pRoot==NULL)//根节点为空结束先序遍历不交换{    return;}if(pRoot->left==NULL&&pRoot->right==NULL)//根节点左右子树为空结束先序遍历 不交换{    return;}BinaryTreeNode *pTemp=pRoot->left;pRoot->left=pRoot->right;pRoot->right=pTemp;if(pRoot->left!=NULL){    MirrorBinaryTree(pRoot->left);//遍历左子树}if(pRoot->right!=NULL){    MirrorBinaryTree(pRoot->right);//遍历右子树}}int main(){   return 0;}


0 0