此题为判断题(对,错)。
(1)沿袭5-60题使用逆转链遍历二叉树的思想。
(2)不使用tag标志,而是用内嵌的栈代替tag的作用。该内嵌的栈使用了叶结点作为栈的结构,没有另外定义栈的存储空间。
(3)利用栈解决在回溯时分辨究竟是从左子树还是右子树上升的问题,步骤是:
①当进入有非空左子树的结点的右子树时,将该结点的地址进栈。
②在回溯过程中如遇到结点的左、布子树都非空时,如果该结点就是存于栈顶的结点,则可判定当前是从该结点的右子树退回,该结点的右子女指针指向它的父结点;否则当前是从该结点的左子树退回,该结点的左子女指向它的父结点。
(1)各层的结点个数是多少?
(2)编号为i的结点的父结点(若存在)的编号是多少?
(3)编号为i的结点的第m个孩子结点(若存在)的编号是多少?
(4)编号为i的结点有右兄弟的条件是什么?其右兄弟结点的编号是多少?
(5)若结点个数为n,则深度h是n的什么函数关系?
A、h+l
B、2h-1
C、3h-2
D、4h-3
本题是对图中的二叉树进行操作,并且LB是指向二叉树树根的指针。Typedef struct node { DataType data; struct node *lch; struct node *rch; }BtNode,*Link (1) int Nodelevel(BtNode *BT, DataType x) {if( BT==NULL) return 0; else if (BT->data==x) return 1; else { int c1=Nodelevel(BT->lch,x); if(c1>=1) return c1+1; int c2=Nodelevel(BT->rch,x); if(c2>=1) return c2+1; return 0; } } “printf(“level is %d”,NodeLevel(LB,’f’));”语句的执行结果是什么?算法所完成的是什么功能? (2) int i=0; void test(BtNode *BT, DataType a[]) { if(BT!=NULL) {test(BT->lch, a); a[i]=BT->data;i++; test(BT->rch, a); } } 本算法执行以后数组a中的内容是什么?
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!