会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
c语言源码
求二叉树高度
因为树是递归定义的,所以用递归算法很方便。
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> using namespace std; struct Node { char data; Node *lchild; Node *rchild; }; void High(Node *T, int &h) { if (T == NULL) h = 0; else { int left_h; High(T->lchild, left_h); int right_h; High(T->rchild, right_h); h = 1 + max(left_h, right_h); } } Node *CreateBiTree(Node *&T) { // 算法6.4 // 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树, // 构造二叉链表表示的二叉树T。 char ch; cin >> ch; if (ch == '#') T = NULL; else { if (!(T = (Node *)malloc(sizeof(Node)))) return 0; T->data = ch; // 生成根结点 CreateBiTree(T->lchild); // 构造左子树 CreateBiTree(T->rchild); // 构造右子树 } return T; } // CreateBiTree void Free(Node *&T) { if (T == NULL) return; Free(T->lchild); // T->lchild = NULL; Free(T->rchild); // T->rchild = NULL; free(T); T = NULL; } int main(int argc, char **argv) { freopen("cin.txt", "r", stdin); Node *T = NULL; CreateBiTree(T); int height; High(T, height); cout << height << endl; Free(T); return 0; } /* cin.txt: A B C # # D E # G # # F # # # */
电脑里东西太杂了,就放这吧。
posted on
2012-06-27 00:29
c语言源码
阅读(
1166
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告