文章

11

粉丝

216

获赞

4

访问

102.8k

头像
记录
P1317 浙江大学机试题
发布于2021年2月25日 12:01
阅读数 7.7k

算法思路:

遍历待判断序列:

    性质: 如果是同一颗二叉排序树,则判断序列的当前元素,在原二叉排序树中的位置的父节点一定是之前就被访问过的。

 

遍历前,根结点要预处理成预访问结点(如果根节点都不同,直接就可以no了);

每访问一个结点都把他的孩子结点设置成预访问的(即往后可以被访问)

如果访问到的结点不是预访问的结点,则表明他们不是同一颗二叉排序树,返回no,结束遍历

 

遍历顺利结束,返回yes;

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
typedef struct node
{
    char data;
    struct node *lchild, *rchild;
} *Bitree;
string s;
node* Bisearch(Bitree T, char key)
{
    if (T == NULL) return NULL;    //找不到,返回NULL,否则返回的都是结点指针

    if (T->data == key) return T;

    if (T->data > key)
        return Bisearch(T->lchild, key);
    else
        return Bisearch(T->rchild, key);
}

void Insert(Bitree &T, char c)
{
    if (T == NULL)
    {
        T = new node;
        T->data = c;
        T->lchild = NULL;
        T->rchild = NULL;
        return ;
    }
    if (c == T->data) return;
    else if (c < T->data) ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发