zoukankan      html  css  js  c++  java
  • (精)(递归遍历的延伸)交换二叉树的左右子树

    给这个函数传的是指针,如果传整个结构,参数堆栈的效率较低

    悟:单链表,恋栈,链队,二叉树的链式存储,传递的参数都是指针

    顺序栈--顺序表-循环队列-传递的都是整个结构进去

    做题一定要经过自己动脑,不要去看答案而试图去记住答案,一定要自己代码一行一行的写,数学题一步一步的写,经过自己深入动脑,这样才能理解好问题

     完全自己研发出来,和二叉树的遍历基本相似

    void exchange99(BTNode *T)
    {   BTNode *b;   //临时作为交换的变量
        if(T==NULL || (T->lchild==NULL&&T->rchild==NULL) )
            return; //为空或者是叶子结点-就不用交换了
        b=T->lchild;
        T->lchild = T->rchild;
        T->rchild = b ;
    
        exchange99(T->lchild);
        exchange99(T->rchild);
    }

    void exchange0(BTNode *T , BTNode *&b)
    {
        if(T==NULL)
            return;
        b=T;
        exchange(T->lchild,b->rchild);
        exchange(T->rchild,b->lchild);
    }

    void exchange(BTNode *T , BTNode *&b)
    {
        if(T==NULL)
            return ;
        b=T;
        exchange(T->lchild,b->lchild);
        exchange(T->rchild,b->rchild);
    }

    直接b=T就copy了这个二叉树,指向了同一棵二叉树

  • 相关阅读:
    图书管理系统
    关键路径
    最短路径

    最小生成树、最短路径
    Huffman编码
    LA 3401
    UVA 10881
    OI 刷题记录——每周更新
    4396: [Usaco2015 dec]High Card Wins
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7056281.html
Copyright © 2011-2022 走看看