文章

11

粉丝

216

获赞

26

访问

107.5k

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

算法思路:

遍历待判断序列:

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

 

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

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

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

 

遍历顺利结束,返回yes;

  1. #include<iostream>
  2. #include<string>
  3. #include<cstring>
  4. using namespace std;
  5. typedef struct node
  6. {
  7. char data;
  8. struct node *lchild, *rchild;
  9. } *Bitree;
  10. string s;
  11. node* Bisearch(Bitree T, char key)
  12. {
  13. if (T == NULL) return NULL; //找不到,返回NULL,否则返回的都是结点指针
  14. if (T->data == key) return T;
  15. if (T->data > key)
  16. return Bisearch(T->lchild, key);
  17. else
  18. return Bisearch(T->rchild, key);
  19. }
  20. void Insert(Bitree &T, char c)
  21. {
  22. if (T == NULL)
  23. {
  24. T = new node;
  25. T->data = c;
  26. T->lchild = NULL;
  27. T->rchild = NULL;
  28. return ;
  29. }
  30. if (c == T->data) return;
  31. else if (c < T->data) ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发