欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

class22 lcy 二叉树的存储

时间:2024-08-19 09:06 作者:admin 点击:
二叉树 是普通树的其中一种特殊情况 二叉树指树的每个节点都最多有两个子节点 1、结构体存二叉树 struct node{ int num; node *l=nullptr,*r=nullptr; }; 2、数组存二叉树 通过fat数组,将下标记为

二叉树 是普通树的其中一种特殊情况

二叉树指树的每个节点都最多有两个子节点

1、结构体存二叉树

struct node{

   int num;

   node *l=nullptr,*r=nullptr;

};

2、数组存二叉树

通过fat数组,将下标记为当前的节点编号,下标对应的元素记为父节点编号。


3、根据二叉树的特点规律存树。

二叉树:如果每个节点都是叶子或都是两个子节点的节点,每一层的节点都满的,就是满二叉树

我们将二叉树的各个位置的编号标记出来,当成下标,那么,对于任意一点x来说:

   如果编号从1开始,那么x的父节点就是x/2,左子x*2,右子x*2+1

   如果编号从0开始,那么x的父节点就是(x-1)/2,左子x*2+1,右子x*2+2


   1、将普通二叉树按照满二叉树的规律补满

   2、将新的二叉树从1开始进行编号

   3、以编号作为下标,以数组元素作为二叉树中节点的值,如果是候补节点,值可以为0或特殊的标记

   4、存树

出题方式:

输入一个字符串,代表从上到下,从左到右的二叉树节点值,如果是.代表空节点

string s;

cin>>s;//ABC.DE.

char erchashu[10000]={};

for(int i=0;i<s.size();i++){

   if(s[i]=='.') erchashu[i+1]='@';

   else erchashu[i+1]=s[i];

}


接下来三天的任务:

回顾基础(一)的前五章,从头到尾挨着找题:

   一眼就会的跳过。

   一眼熟悉的重做一遍,如果做不出来,把题记下来。

   一眼不会,把题记下来。

   这周四之前,一共需要记10道题。


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%