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了这个二叉树,指向了同一棵二叉树

  • 相关阅读:
    js 字符串转化成数字
    web项目中各种路径的获取
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
    软件产品案例分析(团队)
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7056281.html
Copyright © 2011-2022 走看看