1. 程式人生 > >C/C++:各種基本演算法實現小結(三)—— 樹與二叉樹

C/C++:各種基本演算法實現小結(三)—— 樹與二叉樹

各種基本演算法實現小結(三)—— 樹與二叉樹

(均已測試通過)

===================================================================

二叉樹——先序

測試環境:VC 6.0 (C)

[cpp] view plain copy  print?
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <stdlib.h>
  4. struct _node  
  5. {  
  6.     char data;  
  7.     struct _node *lchild;  
  8.     struct _node *rchild;  
  9. };  
  10. typedefstruct _node node, *pnode;  
  11. pnode create_tree()  
  12. {  
  13.     pnode pt;  
  14.     char data;  
  15.     scanf("%c", &data);  
  16.     getchar();  
  17.     if(data==' ')  
  18.         pt=NULL;  
  19.     else
  20.     {  
  21.         pt=(pnode)malloc(sizeof
    (node));  
  22.         pt->data=data;  
  23.         pt->lchild=create_tree();  
  24.         pt->rchild=create_tree();  
  25.     }  
  26.     return(pt);  
  27. }  
  28. void print_pretree(pnode ps)  
  29. {  
  30.     if(ps != NULL)  
  31.     {  
  32.         printf("%3c", ps->data);  
  33.         print_pretree(ps->lchild);  
  34.         print_pretree(ps->rchild);  
  35.     }     
  36. }  
  37. void main()  
  38. {  
  39.     pnode ps;  
  40.     ps=create_tree();  
  41.     print_pretree(ps);  
  42.     printf("/n");  
  43. }  

執行結果:

     

===========================================================

二叉樹——各種操作

測試環境:VC 6.0 (C)

[cpp] view plain copy  print?
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. struct _node  
  4. {  
  5.     char data;  
  6.     struct _node *lchild;  
  7.     struct _node *rchild;  
  8. };  
  9. typedefstruct _node node, *pnode;  
  10. int count_l=0;  /* count leaf */
  11. int count_n=0;  /* count node */
  12. pnode create_tree()  
  13. {  
  14.     pnode pt;  
  15.     char data;  
  16.     scanf("%c", &data);  
  17.     getchar();  
  18.     if(data==' ')  
  19.         pt=NULL;  
  20.     else
  21.     {  
  22.         pt=(pnode)malloc(sizeof(node));  
  23.         pt->data=data;  
  24.         pt->lchild=create_tree();  
  25.         pt->rchild=create_tree();  
  26.     }  
  27.     return(pt);  
  28. }  
  29. void print_pretree(pnode ps)  
  30. {  
  31.     if(ps != NULL)  
  32.     {  
  33.         printf("%3c", ps->data);  
  34.         print_pretree(ps->lchild);  
  35.         print_pretree(ps->rchild);  
  36.     }     
  37. }  
  38. void print_midtree(pnode ps)  
  39. {  
  40.     if(ps != NULL)  
  41.     {  
  42.         print_midtree(ps->lchild);  
  43.         printf("%3c", ps->data);  
  44.         print_midtree(ps->rchild);     
  45.     }  
  46. }  
  47. void print_posttree(pnode ps)  
  48. {  
  49.     if(ps != NULL)  
  50.     {  
  51.         print_posttree(ps->lchild);  
  52.         print_posttree(ps->rchild);  
  53.         printf("%3c", ps->data);  
  54.     }  
  55. }  
  56. int count_leaf(pnode ps)  
  57. {     
  58.     if(ps != NULL)  
  59.     {  
  60.         if(ps->lchild == NULL && ps->rchild == NULL)  
  61.         count_l++;    
  62.         count_leaf(ps->lchild);  
  63.         count_leaf(ps->rchild);  
  64.     }  
  65.     return count_l;  
  66. }  
  67. int count_node(pnode ps)  
  68. {  
  69.     if(ps != NULL)  
  70.     {  
  71.         count_n++;  
  72.         count_node(ps->lchild);  
  73.         count_node(ps->rchild);  
  74.     }  
  75. 相關推薦

    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;