zoukankan      html  css  js  c++  java
  • 7-4 交换二叉树中每个结点的左孩子和右孩子 (20 分)

    题目:

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

    思路:

    首先根据给出的字符串先把二叉树建起来,这里稍稍卡了一下(所以决定写个博客存一下);

    建起来后就好说了,递归交换左右子树;

    然后递归中序遍历就ok了!

    代码:

    #include <bits/stdc++.h>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <queue>
    #include <iomanip>
    #define MAX 1000000000
    #define inf 0x3f3f3f3f
    #define FRE() freopen("in.txt","r",stdin)
    
    using namespace std;
    typedef long long ll;
    const int maxn = 10005;
    struct Node
    {
        char date;
        Node* rt;
        Node* lt;
    };
    typedef Node* Tree;
    int len,idx;
    string str;
    
    void build(Tree& root)
    {
        if(str[idx]=='#'||idx==len) return;
        root = new Node;
        root->date = str[idx];
        root->lt = NULL;
        root->rt = NULL;
        idx++;//因为在字符串中是一直向后走的,所以这里用一个全局变量表示字符串你的下标就ok了
        build(root->lt);
        idx++;
        build(root->rt);
        return;
    }
    
    void exchangeNode(Tree& root)//从根节点一次交换左右子树就搞定!
    {
        if(root->lt==NULL && root->rt==NULL)
            return;
        Node* temp;
        temp = root->lt;
        root->lt = root->rt;
        root->rt = temp;
        if(root->lt!=NULL)
            exchangeNode(root->lt);
        if(root->rt!=NULL)
            exchangeNode(root->rt);
    }
    
    void midTravel(Tree root)//中序遍历二叉树
    {
        if(root->lt!=NULL)
            midTravel(root->lt);
        printf("%c",root->date);
        if(root->rt!=NULL)
            midTravel(root->rt);
    }
    
    int main()
    {
       // FRE();
        cin>>str;
        len = str.length();
        idx = 0;
        Tree root = NULL;
        build(root);
        midTravel(root);
        printf("
    ");
        exchangeNode(root);
        midTravel(root);
        return 0;
    }
  • 相关阅读:
    easy ui 常用控件配置
    oracel 查询语句
    .Net 取树形结构的数据
    Asp.Net Core File的操作
    js 页面技巧
    ASP.NET Core 文件上传
    ASP.NET EF实体主外键关系
    ASP.NET MVC 后台传值前端乱码解决方案 富文本Ueditor编辑
    手机访问网站自动跳转到手机版
    Ecshop布局参考图
  • 原文地址:https://www.cnblogs.com/sykline/p/10579453.html
Copyright © 2011-2022 走看看