天天看點

計算二叉樹的葉子結點個數_C++資料結構二叉樹統計總結點個數,葉子結點個數,單分支結點個數,雙分支結點個數。...

很多書上其實都有提到和該算法。但是經過自己的學習我自己想到一個算法。算是結合了其中的優點吧。

  • 算法描述:該算法遞歸去統計結點個數。值得一提的是該系列算法都是統計根結點以下的符和條件的結點的個數進行了加和。免去的設定全局變量和void的類型的函數。
​
int	CountNodes(LBTree* lbt)
{
	int n = 0;
	if (lbt != NULL)
	{
		++n;
		n += CountNodes(lbt->lchild);
		n += CountNodes(lbt->rchild);
	}
	return n;
}

int CountLeaves(LBTree* lbt)
{
	int n = 0;
	if (lbt != NULL)
	{
		if (lbt->lchild == NULL && lbt->rchild == NULL)
			++n;
		n += CountLeaves(lbt->lchild);
		n += CountLeaves(lbt->rchild);
	}
	return n;
}

int CountSingleNode(LBTree* lbt)
{
	int n = 0;
	if (lbt != NULL)
	{
		if ((lbt->lchild == NULL && lbt->rchild != NULL) || (lbt->rchild == NULL && lbt->lchild != NULL))
			++n;
		n += CountSingleNode(lbt->lchild);
		n += CountSingleNode(lbt->rchild);
	}
	return n;
}

int	CountDoubleNode(LBTree* lbt)
{
	int n = 0;
	if (lbt != NULL)
	{
		if (lbt->lchild != NULL && lbt->rchild != NULL)
			++n;
		n += CountDoubleNode(lbt->lchild);
		n += CountDoubleNode(lbt->rchild);
	}
	return n;
}

​
           
計算二叉樹的葉子結點個數_C++資料結構二叉樹統計總結點個數,葉子結點個數,單分支結點個數,雙分支結點個數。...