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
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分别又称为先根遍历、中根遍历和后根遍历。
参考资料来源:百度百科-二叉树遍历
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;
}
}
哎,还是做第四题把,第四题简单,第二题太麻烦
我出的题上面做的都不对