日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用递归方法对二叉树进行先序、中序和后序遍历

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用递归方法对二叉树进行先序、中序和后序遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?二叉樹為:

???????????????????????? 1

????????????? 2????????? ??????? ??3

????????? 4????? 5???????????? 6??? 7

?????

???????程序如下:

[cpp]?view plaincopy
  • #include<iostream>??
  • #define?N?7??
  • using?namespace?std;??
  • ??
  • typedef?struct?node??
  • {??
  • ????struct?node?*leftChild;??
  • ????struct?node?*rightChild;??
  • ????int?data;??
  • }BiTreeNode,?*BiTree;??
  • ??
  • BiTreeNode?*createNode(int?i)??
  • {??
  • ????BiTreeNode?*?q?=?new?BiTreeNode;??
  • ????q->leftChild?=?NULL;??
  • ????q->rightChild?=?NULL;??
  • ????q->data?=?i;??
  • ??
  • ????return?q;??
  • }??
  • ??
  • BiTree?createBiTree()??
  • {??
  • ????BiTreeNode?*p[N]?=?{NULL};??
  • ????int?i;??
  • ????for(i?=?0;?i?<?N;?i++)??
  • ????????p[i]?=?createNode(i?+?1);??
  • ??
  • ????for(i?=?0;?i?<?N/2;?i++)??
  • ????{??
  • ????????p[i]->leftChild?=?p[i?*?2?+?1];??
  • ????????p[i]->rightChild?=?p[i?*?2?+?2];??
  • ????}??
  • ??
  • ????return?p[0];??
  • }??
  • ??
  • int?visit(BiTree?T)??
  • {??
  • ????return?T->data;??
  • }??
  • ??
  • //?先序遍歷??
  • void?preOrderTraverse(BiTree?T)??
  • {??
  • ????if(T)??
  • ????{??
  • ????????cout?<<?visit(T)?<<?"?";??
  • ????????preOrderTraverse(T->leftChild);??
  • ????????preOrderTraverse(T->rightChild);??
  • ????}??
  • }??
  • ??
  • //?中序遍歷??
  • void?inOrderTraverse(BiTree?T)??
  • {??
  • ????if(T)??
  • ????{??
  • ????????inOrderTraverse(T->leftChild);??
  • ????????cout?<<?visit(T)?<<?"?";??
  • ????????inOrderTraverse(T->rightChild);??
  • ????}??
  • }??
  • ??
  • //?后序遍歷??
  • void?postOrderTraverse(BiTree?T)??
  • {??
  • ????if(T)??
  • ????{??
  • ????????postOrderTraverse(T->leftChild);??
  • ????????postOrderTraverse(T->rightChild);??
  • ????????cout?<<?visit(T)?<<?"?";??
  • ????}??
  • }??
  • ??
  • int?main()??
  • {??
  • ????BiTree?T?=?createBiTree();??
  • ??????
  • ????cout?<<?"先序遍歷:"?<<?endl;??
  • ????preOrderTraverse(T);??
  • ????cout?<<?endl?<<?endl;??
  • ??????
  • ????cout?<<?"中序遍歷:"?<<?endl;??
  • ????inOrderTraverse(T);??
  • ????cout?<<?endl?<<?endl;??
  • ??????
  • ????cout?<<?"后序遍歷:"?<<?endl;??
  • ????postOrderTraverse(T);??
  • ????cout?<<?endl?<<?endl;??
  • ??
  • ????return?0;??
  • }??
  • ?

    ???????? 結果為:

    ?

    先序遍歷:
    1 2 4 5 3 6 7

    中序遍歷:
    4 2 5 1 6 3 7

    后序遍歷:
    4 5 2 6 7 3 1

    總結

    以上是生活随笔為你收集整理的用递归方法对二叉树进行先序、中序和后序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。