zoukankan      html  css  js  c++  java
  • 二叉树的镜像

    思路

    采用递归的思想。对于根节点,若其左子树或右子树不为空(为空返回),则互换左、右子树,然后对于左、右子树,分别递归上述处理方法,直至叶节点。

    实现代码如下:

    #include<iostream>
    using namespace std;
    struct treenode
    {
        char data;
        treenode *lchild;
        treenode *rchild;
    };
    //先序创建二叉树
    treenode *init()
    {
        char data;
        cout<<"please inpur a number:(#代表NULL)"<<endl;
        cin>>data;
        if(data=='#')
            return NULL;
        treenode *head=new treenode;
        head->data=data;
        head->lchild=init();
        head->rchild=init();
        return head;
    }
    //先序递归遍历二叉树
    void print(treenode *head)
    {
        if(head)
        {
            cout<<head->data<<"    ";
            print(head->lchild);
            print(head->rchild);
        }
    }
    //转换二叉树(镜像)
    void change(treenode *head)
    {
        if(head==NULL)
            return;
        if(head->lchild==NULL && head->rchild==NULL)
            return;
        //交换该结点的左右结点
        treenode *temp=head->lchild;
        head->lchild=head->rchild;
        head->rchild=temp;
        //递归左子树
        if(head->lchild)
            change(head->lchild);
        //递归右子树
        if(head->rchild)
            change(head->rchild);
    }

    测试代码以及运行结果:

  • 相关阅读:
    Servlet CDI Example Analysis
    JSON续
    JSON
    Ubuntu 下安装 MySQL
    Filter介绍
    Annotation相关
    Container、Injection
    Java buildTools
    Http协议
    URI URL URN 的区别
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4540798.html
Copyright © 2011-2022 走看看