程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#二叉樹遍歷(基於vs2008實現)

c#二叉樹遍歷(基於vs2008實現)

編輯:C#入門知識

下面簡單介紹一下幾種算法和思路:
先序遍歷:
1. 訪問根結點
2. 按先序遍歷左子樹;
3. 按先序遍歷右子樹;
4. 例如:遍歷已知二叉樹結果為:A->B->D->G->H->C->E->F
中序遍歷:
1. 按中序遍歷左子樹;
2. 訪問根結點;
3. 按中序遍歷右子樹;
4. 例如遍歷已知二叉樹的結果:B->G->D->H->A->E->C->F
後序遍歷:
1. 按後序遍歷左子樹;
2. 按後序遍歷右子樹;
3. 訪問根結點;
4. 例如遍歷已知二叉樹的結果:G->H->D->B->E->F->C->A
層次遍歷:
1.從上到下,從左到右遍歷二叉樹的各個結點(實現時需要借輔助容器);
2.例如遍歷已知二叉樹的結果:A->B->C->D->E->F->G->H

 下面只是做了一個中序遍歷

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TreeNode_2008
{
        // Binary Tree的結點類 
        class Node
        {
            public  int Data { get; set; }
            public  Node LeftSubNode { get; set; }
            public  Node RightSubNode { get; set; }

            // 結點為自己追加子結點(與向左/向右追加結合,形成遞歸) 
            public void Append(Node subNode)
            {
                if (subNode.Data <= this.Data)
                {
                    this.AppendLeft(subNode);
                }
                else
                {
                    this.AppendRight(subNode);
                }
            }

            // 向左追加 
            public void AppendLeft(Node subNode)
            {
                if (this.LeftSubNode == null)
                {
                    this.LeftSubNode = subNode;
                }
                else
                {
                    this.LeftSubNode.Append(subNode);
                }
            }

            // 向右追加 
            public void AppendRight(Node subNode)
            {
                if (this.RightSubNode == null)
                {
                    this.RightSubNode = subNode;
                }
                else
                {
                    this.RightSubNode.Append(subNode);
                }
            }

            // 結點顯示自己的數據 
            public void ShowData()
            {
                Console.WriteLine("Data={0}", this.Data);
            }
        }

        // Binary Tree類 
        class Tree
        {
            // 根結點 
            public Node Root { get; set; }

            // 以某結點為起點,插入結點 
            public void Insert(Node newNode)
            {
                if (this.Root == null)
                {
                    this.Root = newNode;
                }
                else
                {
                    this.Root.Append(newNode);
                }
            }

            // 重載,默認以根結點為起點插入 
            public void MidTravel()
        &nbs

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved