二叉排序树填充题解决方案
二叉排序树填充题代码如下C/C++ codetypedef struct tnode {elemtype datastruct tnode *lchild.*rchlid
二叉排序树填充题
代码如下
C/C++ codetypedef 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;