文章

9

粉丝

37

获赞

91

访问

2.3k

头像
判断二叉树是否对称 题解:
P1551 东北大学机试题
发布于2025年3月12日 19:32
阅读数 115

 

#include<bits/stdc++.h>
using namespace std;
typedef struct node{
    char data;
    struct node *lchild,*rchild;
}Bnode,*BiTree;

/*借助队列来实现层次遍历建立二叉树,我们知道层次遍历是一层一层的遍历,
借助队列先进先出的特性,例如,ABCDE要建立二叉树,A进队列,建立树节点,
然后依次建立左孩子B,加入队列,建立C,加入队列;A左右孩子已建好,此时将A出队列。
然后队列不为空,接着是建立B的左右孩子DE,分别加入队列。
直至队列为空。可以手动模拟一下。

*/
void create(BiTree &T,string s){
    int len=s.length();
    int i=0;
    queue<BiTree> q;
    if(len<=0) T==NULL;
    else{
        T=(BiTree)malloc(sizeof(Bnode));
        T->lchild=NULL;
        T->rchild=NULL;
        T->data=s[i++];
        q.push(T);
        while(!q.empty()&&i<len){
            Bnode *r=q.front();//当前结点
            if(i<len&&s[i]!='#'){//建立左孩子
                Bnode *t=(BiTree)malloc(sizeof(Bnode));
                t->lchild=NULL;
                t->rchild=NULL;
                t->data=s[i++];
                r->lchild=t;
                q.push(t);
          ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发