1.二叉树镜像
void _MirrorTree(Node* root)
{
//1.空树,直接返回
if (root==NULL)
{
return ;
}
//2.树只有一个结点,不用求镜像,直接返回
if(root->left==NULL&&root->right==NULL)
{
return ;
}
//3.树不为空,且大于一个结点
swap(root->left,root->right);
_MirrorTree(root->left);
_MirrorTree(root->right);
}
void _fun(Node* root)
{
if (root==NULL)
{
return ;
}
cout<<root->data<<" ";
_fun(root->left);
_fun(root->right);
}
2.查找
Node* _Find(Node* root,const T x)//二叉树中查找某元素
{
//1.如果树为空,返回空指针
if (root==NULL)
{
return NULL;
}
//2.如果找到了该节点,直接返回该节点的指针
if (root->data==x)
{
return root;
}
//3.如果当前树的根结点的值域不是X,则先找左子树,后找右子树
Node* ret=_Find(root->left,x);
//3.1如果ret不为空,代表在左树中找到了结点,那么直接返回,不用在右树中找了
if (ret)
{
return ret;
}
else//3.2如果在左树中没有找到,那么就要在右树中找,在右树中无论找到与否,都直接返回,找到返回找到的结点,没找到就返回空;
{
ret=_Find(root->right,x);
return ret;
}
}