• 交换二叉树中每个结点的左孩子和右孩子


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

    输入格式:

    输入二叉树的先序序列。

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

    输出格式:

    输出有两行:

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

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

    输入样例:

    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);
        }
    }
  • 相关阅读:
    h5 与原生 app 交互的原理
    软件公司各种角色透视图
    软件公司各种角色透视图
    软件公司各种角色透视图
    3大原则让你的编程之路越走越顺
    LeetCode[39]: 组合总和
    20190826
    Oracle介绍
    Welcome to Giyber Blog
    清醒
  • 原文地址:https://www.cnblogs.com/zhengxin909/p/12658809.html
Copyright © 2020-2023  润新知