zoukankan      html  css  js  c++  java
  • 二叉树转双向链表

    二叉排序树在不改变BinaryNode<Type>的 struct{data;*left;*right}  情况下是可以转换成双向链表的.

    由于二叉树的主要数据都记录在根节点BinaryNode<Type>* root 上的,所以这里就只用BinaryNode类手动建一棵树,

    树形如下:

    新增的有三个主要函数,

    BinaryNode<Type>* GetHead() 是用来查找右子树最小的那个节点

    BinaryNode<Type>* GetTail() 是用来查找左子树最大的那个节点

    void convert()是转换函数,递归调用

    上述两个节点找到之后,分别连上根节点

    如图所示:L:left    R:right

    这里必须注意的是这里使用了递归修改,所以一定要先进行子节点修改的时候,回溯的时候再修改父节点,不然如果父节点的时候修改了树的结构,那么子节点处理的时候就会出错。我用了recordHead,recordTail来记录当前处理的节点左右子树的尾节点和首节点

  • 相关阅读:
    寒假作业1实践题
    寒假作业1问答题
    (1.21)思考题
    [golang note] 匿名组合
    [golang note] 类型系统
    [golang note] 错误处理
    [golang note] 函数定义
    [golang note] 流程控制
    [golang note] 内建类型
    [golang note] 数组切片
  • 原文地址:https://www.cnblogs.com/csxf/p/3992393.html
Copyright © 2011-2022 走看看