熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

c#二叉樹遍歷vs2008實現

2013-11-13 09:52:24  來源: .NET編程 

  下面簡單介紹一下幾種算法和思路

  先序遍歷

   訪問根結點

   按先序遍歷左子樹;

   按先序遍歷右子樹;

   例如遍歷已知二叉樹結果為A>B>D>G>H>C>E>F

  中序遍歷

   按中序遍歷左子樹;

   訪問根結點;

   按中序遍歷右子樹;

   例如遍歷已知二叉樹的結果B>G>D>H>A>E>C>F

  後序遍歷

   按後序遍歷左子樹;

   按後序遍歷右子樹;

   訪問根結點;

   例如遍歷已知二叉樹的結果G>H>D>B>E>F>C>A

  層次遍歷

  從上到下從左到右遍歷二叉樹的各個結點(實現時需要借輔助容器);

  例如遍歷已知二叉樹的結果A>B>C>D>E>F>G>H

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

  using System;

  using SystemCollectionsGeneric;

  using SystemLinq;

  using SystemText;

  namespace TreeNode_

  {

  // 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 (subNodeData <= thisData)

  {

  thisAppendLeft(subNode);

  }

  else

  {

  thisAppendRight(subNode);

  }

  }

  // 向左追加

  public void AppendLeft(Node subNode)

  {

  if (thisLeftSubNode == null)

  {

  thisLeftSubNode = subNode;

  }

  else

  {

  thisLeftSubNodeAppend(subNode);

  }

  }

  // 向右追加

  public void AppendRight(Node subNode)

  {

  if (thisRightSubNode == null)

  {

  thisRightSubNode = subNode;

  }

  else

  {

  thisRightSubNodeAppend(subNode);

  }

  }

  // 結點顯示自己的數據

  public void ShowData()

  {

  ConsoleWriteLine(Data={} thisData);

  }

  }

  // Binary Tree類

  class Tree

  {

  // 根結點

  public Node Root { get; set; }

  // 以某結點為起點插入結點

  public void Insert(Node newNode)

  {

  if (thisRoot == null)

  {

  thisRoot = newNode;

  }

  else

  {

  thisRootAppend(newNode);

  }

  }

  // 重載默認以根結點為起點插入

  public void MidTravel()

  {

  thisMidTravel(thisRoot);

  }

  // 中序遍歷(遞歸)

  public void MidTravel(Node node)

  {

  if (nodeLeftSubNode != null)

  {

  thisMidTravel(nodeLeftSubNode);

  }

  nodeShowData();

  if (nodeRightSubNode != null)

  {

  thisMidTravel(nodeRightSubNode);

  }

  }

  }

  class Program

  {

  static void Main(string[] args)

  {

  Tree tree = new Tree();

  treeInsert(new Node { Data = });

  treeInsert(new Node { Data = });

  treeInsert(new Node { Data = });

  treeInsert(new Node { Data = });

  treeInsert(new Node { Data = });

  treeMidTravel();

  ConsoleRead();

  }

  }

  }


From:http://tw.wingwit.com/Article/program/net/201311/11814.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.