本来进制之间的转换 经典做法是应用堆栈的进栈和出栈操作,但下面的做法比较特别,更为简单,即是应用递归。
十进制转换成二进制的源码如下
void DecToBin(int decimal)
768 {
769 if (decimal == 0)
770 return;
771 DecToBin(decimal/2);
772 printf("%d", decimal%2);
773 }
计算给定二叉树的叶子数目的算法则是经典处理,纯属个人练习而已。
源码如下
void InOrderCreateBinTree(BINTREE *ppBinTree)
776 {
777 char c;
778
779 scanf("%c", &c);
780 if (c == ' ')
781 {
782 *ppBinTree = NULL;
783 return;
784 }
785 *ppBinTree = (BINTREE_NODE *)malloc(sizeof(BINTREE_NODE));
786 if (*ppBinTree == NULL)
787 return;
788 InOrderCreateBinTree(&(*ppBinTree)->lchild);
789 (*ppBinTree)->data = c;
790 InOrderCreateBinTree(&(*ppBinTree)->rchild);
791 }
void FindLeavesCount(BINTREE_NODE *pBinTree, int *pCount)
794 {
795 if (!pBinTree)
796 return;
797 FindLeavesCount(pBinTree->lchild, pCount);
798 FindLeavesCount(pBinTree->rchild, pCount);
799
800 if (!pBinTree->lchild && !pBinTree->rchild)
801 {
802 (*pCount)++;
803 printf("leaf node data = %c\n", pBinTree->data);
804 }