二叉樹前序,中序,后序遍歷算法,C#版

BNode類:

namespace btree.Tree {
    public class BNode<T> {
        public T data;
        public BNode<T> left;
        public BNode<T> right;

        public BNode(T data, BNode<T> left=null, BNode<T> right=null) {
            this.data = data;
            this.left = left;
            this.right = right;
        }
    }
}

BTree類

using System;

namespace btree.Tree {
    public class BTree<T> {
        public BNode<T> root;

        public void preOrder() {
            Console.Write("先根遍歷二叉樹:");
            preOrder(this.root);
            Console.WriteLine();
        }
        public void preOrder(BNode<T> p) {
            if(p!=null) {
                Console.Write(p.data);
                preOrder(p.left);
                preOrder(p.right);
            }
        }

        public void inOrder() {
            Console.Write("中根遍歷二叉樹:");
            inOrder(this.root);
            Console.WriteLine();
        }

        public void inOrder(BNode<T> p) {
            if(p!=null) {
                inOrder(p.left);
                Console.Write(p.data);
                inOrder(p.right);
            }
        }

        public void postOrder() {
            Console.Write("后根遍歷二叉樹:");
            postOrder(this.root);
            Console.WriteLine();
        }

        public void postOrder(BNode<T> p) {
            if(p!=null) {
                postOrder(p.left);
                postOrder(p.right);
                Console.Write(p.data);
            }
        }
    }
}

測(cè)試程序:

using System;
using btree.Tree;

namespace btree
{
    class Program
    {
        static void make(ref BTree<char> bTree) {
            BNode<char> d_node = new BNode<char>('D',null,new BNode<char>('G'));
            BNode<char> b_node = new BNode<char>('B',d_node,null);
            BNode<char> f_node = new BNode<char>('F', new BNode<char>('H'), null);
            BNode<char> c_node = new BNode<char>('C', new BNode<char>('E'), f_node);
            BNode<char> a_node = new BNode<char>('A',b_node, c_node);
            bTree.root = a_node;
        }
        static void Main(string[] args)
        {
            BTree<char> tree = new BTree<char>();
            Program.make(ref tree);
            tree.preOrder();
            tree.inOrder();
            tree.postOrder();
        }
    }
}

輸出結(jié)果:


1.png

原樹結(jié)構(gòu):


2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 在前文數(shù)據(jù)結(jié)構(gòu):二叉樹的原理及java實(shí)現(xiàn)中,我們已經(jīng)了解了二叉樹的原理及二叉樹的三種遍歷方式,假設(shè)父節(jié)點(diǎn)是N,左...
    步積閱讀 12,174評(píng)論 6 5
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,407評(píng)論 7 278
  • 從2016年7月畢業(yè)至今,雖然已經(jīng)有一年多的時(shí)間了,但由于在這段時(shí)間里一直在準(zhǔn)備公職考試,真正參與社會(huì)的機(jī)會(huì)...
    左顧右盼的剛子閱讀 302評(píng)論 0 1
  • 春波一度經(jīng)年外, 驚鴻一瞥把酒斟。 沈園情起年年顧, 不如憐取眼前人。
    喵先生如是說(shuō)閱讀 295評(píng)論 3 1

友情鏈接更多精彩內(nèi)容