二叉樹前序,中序,后序遍歷算法,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);
            }
        }
    }
}

測試程序:

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();
        }
    }
}

輸出結果:


1.png

原樹結構:


2.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 在前文數據結構:二叉樹的原理及java實現中,我們已經了解了二叉樹的原理及二叉樹的三種遍歷方式,假設父節點是N,左...
    步積閱讀 11,889評論 6 5
  • 1.測試與軟件模型 軟件開發生命周期模型指的是軟件開發全過程、活動和任務的結構性框架。軟件項目的開發包括:需求、設...
    Mr希靈閱讀 21,987評論 7 278
  • 從2016年7月畢業至今,雖然已經有一年多的時間了,但由于在這段時間里一直在準備公職考試,真正參與社會的機會...
    左顧右盼的剛子閱讀 274評論 0 1
  • 春波一度經年外, 驚鴻一瞥把酒斟。 沈園情起年年顧, 不如憐取眼前人。
    喵先生如是說閱讀 283評論 3 1