zoukankan      html  css  js  c++  java
  • 交换二叉树中每个结点的左孩子和右孩子

    以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。

    输入格式:

    输入二叉树的先序序列。

    提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。

    输出格式:

    输出有两行:

    第一行是原二叉树的中序遍历序列;

    第二行是交换后的二叉树的中序遍历序列。

    输入样例:

    ABC##DE#G##F###

    输出样例:

    CBEGDFA

    AFDGEBC

    代码实现:

    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    
    typedef struct TreeNode *BinTree;
    struct TreeNode
    {
        char data;
        BinTree left, right;
    };
    
    BinTree CreatBinTree();    //创建树 
    void PreOrderTraversal( BinTree BT );    //中序遍历 
    void change ( BinTree BT );    //交换根节点 
    
    int main(){
        BinTree BT = CreatBinTree();
        PreOrderTraversal(BT);
        printf("
    "); 
        change ( BT );
        PreOrderTraversal(BT);
        return 0;
    }
    
    BinTree CreatBinTree(){ //根据前序遍历创建树
        BinTree BT;
        char str;
        scanf("%c", &str);
        if (str != '#'){
            BT = (BinTree)malloc(sizeof(struct TreeNode));
            BT->data = str;
            BT->left = CreatBinTree();
            BT->right = CreatBinTree();
        }
        else {
            BT = NULL;
        }
        return BT;
    }
    
    void change ( BinTree BT ){    //交换根节点(左右子树不空) 
        if (BT->right == NULL && BT->left == NULL){
            return;
        }
        BinTree t;
        t = BT->left;
        BT->left = BT->right;
        BT->right = t;
        if (BT->left){    //往后扫描 
            change (BT->left);
        }
        if (BT->right){
            change (BT->right);
        }
    }
    
    void PreOrderTraversal( BinTree BT ){    //中序遍历 
        if (BT) {
            PreOrderTraversal (BT->left);
            printf("%c", BT->data);
            PreOrderTraversal (BT->right);
        }
    }
  • 相关阅读:
    matlab的矩阵基础
    matlab基础运算
    【转】Android设置虚线、圆角、渐变
    DialogFragment 自定义弹窗
    imeOptions 属性详解
    android fragment 博客 学习记录
    【转】android fragment 博客 学习
    android UI库
    【转】 Android自定义捕获Application全局异常
    vitamio 缓冲一部分时,loading还没消失,直接点击播放,loading未能消失
  • 原文地址:https://www.cnblogs.com/zhengxin909/p/12658809.html
Copyright © 2011-2022 走看看