首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

二叉排序树填充题解决方案

2012-02-29 
二叉排序树填充题代码如下C/C++ codetypedef struct tnode {elemtype datastruct tnode *lchild.*rchlid

二叉排序树填充题
代码如下

C/C++ code
typedef struct tnode {    elemtype data;    struct tnode *lchild.*rchlid;    } tnode, *bitreptr ;bitreptr insert(bitreptr root , char ch){ bitreptr  p, q, r;  p=null ; q=root;  while (q && q→data!=ch)     {       p=q;       if (ch<q→data)    (A);       else    (B);      }  if (!q)  {  q = (bitreptr)malloc(sizeof(tnode));  q→data=ch; q→lchild=q→rchild=null;  if (!p)    (C)   ;  else  if (ch<p→data)    (D)   ;  else   (E)   ;  }return root;}

ABCDE的地方是需要填的东西,关键是说说思路

[解决办法]
A: q=q->lchild;
B: q=q->rchild;
//这两句是找到ch插入的位置,如果找到重复的值就什么都不做,否则,需要插入新节点
//如果发现ch已经在二叉树中,q!=null,下面的if语句不会执行. 如果没找到,q==null, 且p是需要插入节点的父节点

C: root=p; //说明root是空的,这时新建的节点就是root
D: p->lchild=q; //插入的节点是其父节点的左节点
E: p->rchild=q; ////插入的节点是其父节点的右节点
[解决办法]
上个解释的很好
A q=q→lchild;
B q=q→rchild;
C root=q;
D p→lchild=q;
E p→rchild=q;
[解决办法]
更正一下1L,不好意思写错了
C: root=q;

热点排行