文章
67
粉丝
207
获赞
29
访问
36.7k
自己写的通过率只有40%因为超出存储范围(主要是题目数据最大有十位),思路是我感觉写一下
1.层次遍历建立二叉树,用#include头文件(非递归),先在main里面赋给其存储
(i)queue Q 初始化队列 给队列定义一个名字 <>里面是类型,后面给队列取一个名字Q
(ii)Q.push(L) ------>入队
(iii)一个while()循环(借鉴别人的二叉树层次遍历,注意不是建立,!Q.empty里面要写作为退出条件)
这里实际上一个while(1)就行了
(iv)循环里面的 L=Q.front ;//取队头元素 Q.pop();//队头元素出队 出队元素够规定值了,直接break;
(iiv)易错---> 在左右结点的遍历的时候一 定要先分配空间,分配值(分配值为0)!!! 最后还要把他们的孩子的指针也指向NULL,不然报错!!!再入队
2.找到结点
先序遍历
注意是必须满足不为空且 值不为0(证明初始化过且出过队)
然后寻找目标的那个结点
3.统计结点自己以及下面有多少个结点
先序遍历其他规则同上
#include <iostream>
#include<queue>
using namespace std;
/*typedef struct node{
long long int data;
struct node *r,*l;
}node,*Lnode;
int count1=0;
//层次遍历创造二叉树=========================================
int create(Lnode &L,int m,int count){//非递归===============================
queue<Lnode> Q;
Q....
登录后发布评论
加油