이 진 트 리 매듭 포인트 와 잎 매듭 점 수 를 구하 세 요.

1175 단어 데이터 구조
이 진 트 리 구축 은 생략 하 겠 습 니 다.
#include 
#include 
#include 
#include 
typedef int Status;
using namespace std;

헤더 파일 용
Status allnodenum(BiTree &T)//         
{
    if(!T)return 0;
    int l,r,num;
    l=allnodenum(T->lchild);
    r=allnodenum(T->rchild);
    num=l+r;
    num++;
    return num;
}

잎 결점 에서 위로 세 어 보 세 요. 모든 결점 은 왼쪽 나무 와 오른쪽 나무 매듭 점 수 를 더 한 다음 에 그 자체 가 바로 이 결점 을 뿌리 로 하 는 나무의 매듭 점 입 니 다.
Status leafnodenum(BiTree &T)//     
{
    int num=0;
    queue Q;
    if(!T)return error;
    Q.push(T);
    BiTree p=T;
    while(!Q.empty())
    {
        Q.pop();
        if(p->lchild==NULL&&p->rchild==NULL)num++;//       ,      
        if(p->lchild)Q.push(p->lchild);
        if(p->rchild)Q.push(p->rchild);
        p=Q.front();
    }
    return num;
}//            

처음에는 위 에서 총 결 점 수 를 구 하 는 방법 으로 잎 사 귀 결 점 수 를 구 하려 고 했 는데 반 만 생각하면 끊 겼 다.
사용 한 방법 으로 모든 결점 을 한 번 훑 어 보 았 다. 만약 그것 의 좌우 아이 가 모두 비어 있다 면, 즉 잎 에 점 을 찍 은 후에 누적 하여 잎 에 점 수 를 구 하 는 것 이다.

좋은 웹페이지 즐겨찾기