C/C++:各種基本演算法實現小結(三)—— 樹與二叉樹
各種基本演算法實現小結(三)—— 樹與二叉樹
(均已測試通過)
===================================================================
二叉樹——先序
測試環境:VC 6.0 (C)
[cpp] view plain copy print?- #include <stdio.h>
- #include <malloc.h>
- #include <stdlib.h>
- struct _node
- {
-
char data;
- struct _node *lchild;
- struct _node *rchild;
- };
- typedefstruct _node node, *pnode;
- pnode create_tree()
- {
- pnode pt;
- char data;
- scanf("%c", &data);
- getchar();
- if(data==' ')
- pt=NULL;
- else
- {
-
pt=(pnode)malloc(sizeof
- pt->data=data;
- pt->lchild=create_tree();
- pt->rchild=create_tree();
- }
- return(pt);
- }
- void print_pretree(pnode ps)
- {
- if(ps != NULL)
- {
- printf("%3c", ps->data);
-
print_pretree(ps->lchild);
- print_pretree(ps->rchild);
- }
- }
- void main()
- {
- pnode ps;
- ps=create_tree();
- print_pretree(ps);
- printf("/n");
- }
執行結果:
===========================================================
二叉樹——各種操作
測試環境:VC 6.0 (C)
[cpp] view plain copy print?- #include <stdio.h>
- #include <malloc.h>
- struct _node
- {
- char data;
- struct _node *lchild;
- struct _node *rchild;
- };
- typedefstruct _node node, *pnode;
- int count_l=0; /* count leaf */
- int count_n=0; /* count node */
- pnode create_tree()
- {
- pnode pt;
- char data;
- scanf("%c", &data);
- getchar();
- if(data==' ')
- pt=NULL;
- else
- {
- pt=(pnode)malloc(sizeof(node));
- pt->data=data;
- pt->lchild=create_tree();
- pt->rchild=create_tree();
- }
- return(pt);
- }
- void print_pretree(pnode ps)
- {
- if(ps != NULL)
- {
- printf("%3c", ps->data);
- print_pretree(ps->lchild);
- print_pretree(ps->rchild);
- }
- }
- void print_midtree(pnode ps)
- {
- if(ps != NULL)
- {
- print_midtree(ps->lchild);
- printf("%3c", ps->data);
- print_midtree(ps->rchild);
- }
- }
- void print_posttree(pnode ps)
- {
- if(ps != NULL)
- {
- print_posttree(ps->lchild);
- print_posttree(ps->rchild);
- printf("%3c", ps->data);
- }
- }
- int count_leaf(pnode ps)
- {
- if(ps != NULL)
- {
- if(ps->lchild == NULL && ps->rchild == NULL)
- count_l++;
- count_leaf(ps->lchild);
- count_leaf(ps->rchild);
- }
- return count_l;
- }
- int count_node(pnode ps)
- {
- if(ps != NULL)
- {
- count_n++;
- count_node(ps->lchild);
- count_node(ps->rchild);
- }
-
相關推薦
C/C++:各種基本演算法實現小結(三)—— 樹與二叉樹
各種基本演算法實現小結(三)—— 樹與二叉樹 (均已測試通過) =================================================================== 二叉樹——先序 測試環境:VC 6.0 (C
C/C++:各種基本演算法實現小結(四)—— 圖及其遍歷
各種基本演算法實現小結(四)—— 圖及其遍歷 (均已測試通過) ==================================================================== 圖——深度優先和廣度優先演算法 無向圖
C/C++:各種基本演算法實現小結(六)—— 查詢演算法
各種基本演算法實現小結(六)—— 查詢演算法 (均已測試通過) =================================================================== 1、簡單查詢 在一組無序數列中,查詢特定某個數值,並返回其位置
C/C++:各種基本演算法實現小結(七)—— 常用演算法
各種基本演算法實現小結(七)—— 常用演算法 (均已測試通過) ====================================================================== 1、判斷素數 測試環境:VC 6.0
C/C++:各種基本演算法實現小結(二)—— 堆 棧
各種基本演算法實現小結(二)—— 堆 棧 (均已測試通過) ============================================================== 棧——陣列實現 測試環境:Win - TC
C/C++:各種基本演算法實現小結(一)—— 單鏈表
各種基本演算法實現小結(一)—— 單鏈表 (均已測試通過) ============================================================ 單鏈表(測試通過) 測試環境: Win-TC
各種基本演算法實現小結(五)—— 排序演算法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
PTA 資料結構與演算法題目集(中文) 6-9 二叉樹的遍歷
6-9 二叉樹的遍歷(25 分)本題要求給定二叉樹的4種遍歷。函式介面定義:void InorderTraversal( BinTree BT ); void PreorderTraversal( Bi
PTA資料結構與演算法題目集(中文)4-9 二叉樹的遍歷 (25分)
本題要求給定二叉樹的4種遍歷。 函式介面定義: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT
數據結構 第5章 樹的二叉樹 單元小結(2)遍歷二叉樹和線索二叉樹
進行 深度 bsp iteration oid 基礎 二叉樹 線索 push 概念: 遍歷二叉樹: 遍歷:指按某條搜索路線遍訪每個結點且不重復(又稱周遊)。 遍歷的用途:它是樹結構插入、刪除、修改、查找和排序運算的前提,是二叉樹一切運算的基礎和核心。 時間效率: O
Spring技術內幕:Spring AOP的實現原理(三)
dede ide configure ida mini == src min dem 生成SingleTon代理對象在getSingleTonInstance方法中完畢,這種方法時ProxyFactoryBean生成AopProxy對象的入口。代理對象會
c++樹及樹與二叉樹的轉換
此演算法中的樹結構為“左兒子有兄弟連結結構” 在這樣的一個二叉樹中,一個節點的左分支是他的大兒子節點,右分支為他的大兄弟節點。 這裡講的樹有遞迴前根,中根,後根遍歷,插入節點,插入兄弟節點,查詢結點,釋放記憶體這些功能。 重點說一下查詢節點這一演算法: pSTreeNode CTree::Search
樹與二叉樹(C語言)
1. 儲存結構 1.1 順序儲存結構 1.2 鏈式儲存結構 typedef strcture BTNode { char data; struct BTNode *lchild; struct BTNode *rchild; }BTNode;
GBDT梯度提升樹演算法原理小結(三)
首先我們回顧一下Gradient Boosting 的本質,就是訓練出,使損失函式最小,即 其求解步驟如下: 所以,我們首先得定義出損失函式,才能談求解的事情。接下來我們針對不同場景,介紹相應的損失函式。 迴歸 對於迴歸問題,定義好損失函式後,Gradient B
String 常用方法最優演算法實現總結 (三) -- findCommonSubstring 和difference
1. String difference(final String str1, final String str2) 說明:Compares two Strings, and returns the portion where they differ. i.e: ("ahc
實驗四:樹與二叉樹的實驗一
一、實驗目的1、 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現;2、 掌握樹的順序結構的實現;3、 學會運用樹的知識解決實際問題二、實驗內容 自己確定一個二叉樹(樹結點型別、數目和結構自定)利用順序結構方法儲存。實現樹的構造,並完成:1) 層序輸出結點資料;2) 以合理的格式
Android版資料結構與演算法(六):樹與二叉樹
/** * 前序遍歷——迭代 * @author Administrator * */ public void preOrder(TreeNode node){ if(node == null){ return;
PTA資料結構與演算法題目集(中文)4-12 二叉搜尋樹的操作集 (30分)
本題要求實現給定二叉搜尋樹的5種常用操作。 函式介面定義: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Fin
【資料結構與演算法】002—樹與二叉樹(Python)
概念 樹 樹是一類重要的非線性資料結構,是以分支關係定義的層次結構 定義: 樹(tree)是n(n>0)個結點的有限集T,其中: 有且僅有一個特定的結點,稱為樹的根(root) 當n>1時,其餘結點可分為m(m>0)個互不相交的有限集T1,T2,……Tm,其中每一個集合本身又是一棵
C++ 靜態連結串列基本演算法實現
C++ 靜態連結串列基本演算法實現 #ifndef StaticLinkList_h #define StaticLinkList_h const int MAXSIZE = 100; template <class T> struct StaticNode{ T data;