已知二叉树的先序遍历序列和中序遍历序列,统计该二叉树中叶子结点的个数 用C语言怎么编写?急急急在考试

2025-04-25 19:44:08
推荐回答(4个)
回答1:

int LeafNodes(BiTree T)

{ if(T==NULL) return 0;

else if((T->lchild==NULL)&&(T->rchild==NULL)) return 1;

else

{ numl=LeafNodes (T->lchild);

numr=LeafNodes (T->rchild);

return numr+numl;

或者:

public int getNumberOfLeavesByQueue(BinaryTreeNode root){

int count = 0; //叶子节点总数

LinkQueue queue = new LinkQueue<>();

if(root != null){

queue.enQueue(root);

}

while (!queue.isEmpty()) {

BinaryTreeNode temp = (BinaryTreeNode) queue.deQueue();

//叶子节点:左孩子节点和右孩子节点都为NULL的节点

if(temp.getLeft() == null && temp.getRight() == null){

count++;

}else{

if(temp.getLeft() != null){

queue.enQueue(temp.getLeft());

}

if(temp.getRight() != null){

queue.enQueue(temp.getRight());

扩展资料:

根据访问结点操作发生位置命名:

① NLR:前序遍历(Preorder Traversal 亦称(先序遍历))

——访问根结点的操作发生在遍历其左右子树之前。

② LNR:中序遍历(Inorder Traversal)

——访问根结点的操作发生在遍历其左右子树之中(间)。

③ LRN:后序遍历(Postorder Traversal)

——访问根结点的操作发生在遍历其左右子树之后。

注意:

由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。

参考资料来源:百度百科-二叉树遍历

回答2:

int LeafNodes(BiTree T)
{ if(T==NULL) return 0;
else if((T->lchild==NULL)&&(T->rchild==NULL)) return 1;
else
{ numl=LeafNodes (T->lchild);
numr=LeafNodes (T->rchild);
return numr+numl;
}
}

回答3:

哎,还是做第四题把,第四题简单,第二题太麻烦

回答4:

我出的题上面做的都不对