나무의 높이와 너비 구하기 | 나무
//
int getTreeHigh(BiTree Tree)
{
int LeftTreeHigh = 0,RightTreeHigh = 0;
if (Tree==NULL)
{
return 0;
}
LeftTreeHigh = getTreeHigh(Tree->lchild)+1;
RightTreeHigh = getTreeHigh(Tree->rchild)+1;
return getMax(LeftTreeHigh,RightTreeHigh);
}
최소 가지 길이를 구하는 것을 삽입합니다.
//
int getTreeLeastHigh(BiTree Tree)
{
int LeftTreeHigh = 0,RightTreeHigh = 0;
if (Tree==NULL)
{
return 0;
}
LeftTreeHigh = getTreeLeastHigh(Tree->lchild)+1;
RightTreeHigh = getTreeLeastHigh(Tree->rchild)+1;
return getMin(LeftTreeHigh,RightTreeHigh);
}
방법2: 높이를 가지고 돌아다니며 잎 노드 사이의 높이를 비교한다
//
static int MaxDepth = 0;
void getTreeHigh3(BiTree Tree,int Depth=0)
{
if (Tree!=NULL)
{
//
if ((Tree->lchild==NULL)&&(Tree->rchild==NULL))
{
if (MaxDepthlchild,Depth+1);
getTreeHigh3(Tree->rchild,Depth+1);
}
}
방법 3: 층차를 이용하여 두루 다니면 마지막 층은 높이이다
//
int getTreeHigh2(BiTree Tree)
{
if(Tree==NULL)
{
return 0;
}
Queue MyQueue(100);
BiNode *p=Tree;
// 、 、
int High = 0,NodesLeft = 1,NodesCnt = 0;
//printf(" 0:");
do
{
//printf("%d ",p->data);
if (p->lchild!=NULL)
{
NodesCnt++;
MyQueue.EnQueue(p->lchild);
}
if (p->rchild!=NULL)
{
NodesCnt++;
MyQueue.EnQueue(p->rchild);
}
NodesLeft--;
if (NodesLeft==0)
{
//
NodesLeft = NodesCnt;
NodesCnt = 0;
High++;
}
}
while(MyQueue.DeQueue(&p));
return High-1;
}
// , 0,
// , , , 。
template
void getTreeLevelWidth(T Tree,int ObjectDepth,int *WidthCnt,int CurDepth=0)
{
if (Tree==NULL||CurDepth>ObjectDepth)
{
return;
}
else if(CurDepthlchild,ObjectDepth,WidthCnt,CurDepth+1);
getTreeLevelWidth(Tree->rchild,ObjectDepth,WidthCnt,CurDepth+1);
}
else
{
(*WidthCnt)++;
}
}
template
int getTreeMaxWidth(T Tree,int TreeHigh)
{
int MaxWidth=0,CurWidth=0;
for (int i = 0;i=MaxWidth)
{
MaxWidth = CurWidth;
}
}
return MaxWidth;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.