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;
    }
  • 相关阅读:
    HIVE优化学习笔记
    HIVE执行引擎TEZ学习以及实际使用
    端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手四次挥手,滑动窗口(整理转发)
    kafka时间轮简易实现(二)
    kafka时间轮的原理(一)
    JAVA之G1垃圾回收器
    JAVA之垃圾收集器
    JAVA之内存结构
    SparkSQL学习笔记
    Python 学习 --简单购物车程序
  • 原文地址:https://www.cnblogs.com/sykline/p/10579453.html
Copyright © 2011-2022 走看看