数据结构入门(十四)——非线性结构——树的存储

Posted UDK_KL.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构入门(十四)——非线性结构——树的存储相关的知识,希望对你有一定的参考价值。

前言

本系列文章是笔者学习数据结构的笔记,如有不妥之处欢迎指正


目录


树的存储

二叉树的存储:

连续存储

  • 转化为完全二叉树
     优点:查找某个节点的父节点和子节点速度很快
     缺点:耗费内存
  • 链式存储

一般树存储

  • 转化为完全二叉树

森林的存储

  • 转化为完全二叉树

建树代码

#include<iostream>

using namespace std;

struct Node
    char Data;
    Node *L;
    Node *R;
;

Node *Creat()
    Node *p = new Node;
    char a;
    cin>>a;
    if(a=='#')
        return nullptr;
     else
        p->Data = a;
        p->L = Creat();
        p->R = Creat();
        return p;
    
;

void Find(Node *p)
    if (!p)
        return;
    
    Find(p->L);
    cout<<p->Data;
    Find(p->R);

int main()
    Node *Root = new Node;
    char a;
    cin>>a;
    if (a=='#')
        return 0;
    else
        Root->Data = a;
        Root->L = Creat();
        Root->R = Creat();
    
    Find(Root);
    return 0;

输入

字符串形式的先序序列
ABC##DE#G##F###

输出

中序遍历结果
CBEGDFA

以上是关于数据结构入门(十四)——非线性结构——树的存储的主要内容,如果未能解决你的问题,请参考以下文章

数据结构入门(十四)——非线性结构——树的存储

数据结构入门(十四)——非线性结构——树的存储

Java-数据结构:树

树形dp

第五章题解

数据结构——线段树