zoukankan      html  css  js  c++  java
  • 关于二叉树的一点补充。

    上篇小结了一下 关于二叉树的基本内容,这里再作两点补充 :二叉树销毁  和 镜像二叉树

    <1> 二叉树销毁

    在进行销毁时注意两点:

    ①使用后序遍历的思路进行销毁

    ②由于最后二叉树销毁后,需要将最初指向树根结点的指针置空,故函数传参需要传二级指针

    void  DestroyBTree(BTNode** ppTree){  //注意要传二级指针,因为最后要把指向树的指针置空                                                                      
        BTNode* root = *ppTree;           //而每次递归传进到函数里的只是原指针值的拷贝(是个复制品)它的改变并不能改变原值。
        if(root == NULL){
            return;
        }
        
        DestroyBTree(&(root->_lchild));
        DestroyBTree(&(root->_lchild));
        free(root);
        *ppTree = NULL;
    }

    <2>镜像二叉树

    顾名思义其就是原二叉树的镜像对称二叉树。如下图

    其实它相当于按  根->右->左  的顺序遍历,恰恰和后序遍历反过来;正因如此,才有了前面实现非递归后序遍历的另一种方法(双栈法)。

    void MirrorBTree(BTNode* root){
        BTNode* tmp = NULL;
        if(root == NULL)  return;
             
        tmp = root->_lchild;
        root->_lchild = root->_rchild;
        root->_rchild = tmp;
        
        printf("%d ",root->_data);
        MirrorBTree(root->_lchild);
        MirrorBTree(root->_rchild);
    }
  • 相关阅读:
    Python的内置模块itertools
    列表的sort()和sorted()方法
    Python面试
    数据分析相关概念
    数据分析中Numpy,Pandas,Matplotlib,scripy和Scikit-Learn等数据处理库...
    mysql数据库的语法及简介
    Cannot add foreign key constraint
    MySQL数据库重装
    MySQL数据库在Python中的操作
    Python中的取整函数
  • 原文地址:https://www.cnblogs.com/tp-16b/p/8284245.html
Copyright © 2011-2022 走看看