// 樹的遍歷.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include//二叉鏈表示法
typedef struct bitnode
;typedef struct bitnode* bitree;
//先序遍歷
void preoder(bitnode *root)
printf("%d ",root->data);
//遍歷左子樹
preoder(root->lchild);
//遍歷右子樹
preoder(root->rchild);
}//中序遍歷
void inorder(bitnode *root)
//遍歷左子樹
inorder(root->lchild);
printf("%d ", root->data);
//遍歷右子樹
inorder(root->rchild);
}//後序遍歷
void postorder(bitnode *root)
//遍歷左子樹
postorder(root->lchild);
//遍歷右子樹
postorder(root->rchild);
printf("%d ", root->data);
}//計算二叉樹中葉子結點的數目
int num = 0;
void leafcount(bitnode *root)
leafcount(root->lchild);
leafcount(root->rchild);
} //return 0;
//printf("%d\n ", num);
}//計算二叉樹的深度
int depthtree(bitnode *root)
//求左子樹高度
leftdepth = depthtree(root->lchild);
//求右子樹高度
rightdepth = depthtree(root->rchild);
//+1
depth = 1+(leftdepth > rightdepth ? leftdepth : rightdepth);
return depth;
}//copy二叉樹
bitnode* copytree(bitnode* root)
if (root->lchild!=null)
else
if (root->rchild != null)
else
newnode = (bitnode*)malloc(sizeof(bitnode));
if (newnode == null)
newnode->lchild = newleftnode;
newnode->rchild = newrightnode;
newnode->data = root->data;
return newnode;
}int main()
求二叉樹的深度 寬度和葉子結點數
如果用鍊錶來儲存二叉樹,那麼可以將二叉樹定義如下 typedef char elemtype typedef struct nodebtnode 問題一 二叉樹的深度 二叉樹的深度,也叫二叉樹的高度,二叉樹的深度等於從根結點到葉子結點的最長路徑加1。用遞迴的觀點來看,二叉樹的深度,等於其最大左右子樹...
葉子結點和分支節點 樹的度和結點數的關係
一 概念 與圖論中的 度 不同,樹的度是如下定義的 有根樹t中,結點x的子女數目稱為x的度。也就是 在樹中,結點有幾個分叉,度就是幾。乙個有用的小公式 樹中結點數 總分叉數 1。這裡的分叉數就是所有結點的度之和 二 度的計算 1.設樹t的度為4,其中度為1,2,3,4的節點個數分別為4,2,1,1,...
C語言 二叉樹計算 求葉子結點數目,樹的高度
define crt secure no warnings include include 二叉樹結點 typedef struct binarynode binarynode 遞迴求葉子數量 void calculateleafnum binarynode root,int leafnum if ...