设一棵Hufftman树用静态链表结构存储、每个树结点的类定义为:
请帮忙给出正确答案和分析,谢谢!
请帮忙给出正确答案和分析,谢谢!
A、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL && T->rchild==NULL) return 1 + LCC(T->lchild) ; }
B、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL && T->rchild==NULL) return 1 + LCC(T->lchild) + LCC(T->rchild); else return LCC(T->rchild); }
C、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL) return 1 + LCC(T->lchild) + LCC(T->rchild); else return LCC(T->rchild); }
D、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL) return 1 + LCC(T->lchild) ; else return 1+LCC(T->rchild); }
A、int leaf=0; void LeafCount(BiTree bt) { if(bt==NULL) return; if(bt->L==NULL && bt->R==NULL) leaf++; LeafCount(bt->L); LeafCount(bt->R); }
B、int leaf=0; void LeafCount(BiTree bt) { if(bt==NULL) return; LeafCount(bt->L); if(bt->L==NULL && bt->R==NULL) leaf++; LeafCount(bt->R); }
C、int leaf=0; void LeafCount(BiTree bt) { if(bt==NULL) return; LeafCount(bt->L); LeafCount(bt->R); if(bt->L==NULL && bt->R==NULL) leaf++; }
D、int leaf=0; void LeafCount(BiTree bt) { if(bt->L==NULL && bt->R==NULL) leaf++; LeafCount(bt->L); LeafCount(bt->R); }
(1)沿袭5-60题使用逆转链遍历二叉树的思想。
(2)不使用tag标志,而是用内嵌的栈代替tag的作用。该内嵌的栈使用了叶结点作为栈的结构,没有另外定义栈的存储空间。
(3)利用栈解决在回溯时分辨究竟是从左子树还是右子树上升的问题,步骤是:
①当进入有非空左子树的结点的右子树时,将该结点的地址进栈。
②在回溯过程中如遇到结点的左、布子树都非空时,如果该结点就是存于栈顶的结点,则可判定当前是从该结点的右子树退回,该结点的右子女指针指向它的父结点;否则当前是从该结点的左子树退回,该结点的左子女指向它的父结点。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!