C# 实现二叉树

  1. namespace BinaryTree
  2. {
  3.     // Binary Tree的结点类
  4.     class Node
  5.     {
  6.         public int Data { getset; }
  7.         public Node LeftSubNode { getset; }
  8.         public Node RightSubNode { getset; }
  9.         // 结点为自己追加子结点(与向左/向右追加结合,形成递归)
  10.         public void Append(Node subNode)
  11.         {
  12.             if (subNode.Data <= this.Data)
  13.             {
  14.                 this.AppendLeft(subNode);
  15.             }
  16.             else
  17.             {
  18.                 this.AppendRight(subNode);
  19.             }
  20.         }
  21.         // 向左追加
  22.         public void AppendLeft(Node subNode)
  23.         {
  24.             if (this.LeftSubNode == null)
  25.             {
  26.                 this.LeftSubNode = subNode;
  27.             }
  28.             else
  29.             {
  30.                 this.LeftSubNode.Append(subNode);
  31.             }
  32.         }
  33.         // 向右追加
  34.         public void AppendRight(Node subNode)
  35.         {
  36.             if (this.RightSubNode == null)
  37.             {
  38.                 this.RightSubNode = subNode;
  39.             }
  40.             else
  41.             {
  42.                 this.RightSubNode.Append(subNode);
  43.             }
  44.         }
  45.         // 结点显示自己的数据
  46.         public void ShowData()
  47.         {
  48.             Console.WriteLine("Data={0}"this.Data);
  49.         }
  50.     }
  51.     // Binary Tree类
  52.     class Tree
  53.     {
  54.         // 根结点
  55.         public Node Root { getset; }
  56.         // 以某结点为起点,插入结点
  57.         public void Insert(Node newNode)
  58.         {
  59.             if (this.Root == null)
  60.             {
  61.                 this.Root = newNode;
  62.             }
  63.             else
  64.             {
  65.                 this.Root.Append(newNode);
  66.             }
  67.         }
  68.         // 重载,默认以根结点为起点插入
  69.         public void MidTravel()
  70.         {
  71.             this.MidTravel(this.Root);
  72.         }
  73.         
  74.         // 中序遍历(递归)
  75.         public void MidTravel(Node node)
  76.         {
  77.             if (node.LeftSubNode != null)
  78.             {
  79.                 this.MidTravel(node.LeftSubNode);
  80.             }
  81.             node.ShowData();
  82.             if (node.RightSubNode != null)
  83.             {
  84.                 this.MidTravel(node.RightSubNode);
  85.             }
  86.         }
  87.     }
  88.     class Program
  89.     {
  90.         static void Main(string[] args)
  91.         {
  92.             Tree tree = new Tree();
  93.             
  94.             tree.Insert(new Node { Data = 3 });
  95.             tree.Insert(new Node { Data = 6 });
  96.             tree.Insert(new Node { Data = 2 });
  97.             tree.Insert(new Node { Data = 7 });
  98.             tree.Insert(new Node { Data = 18 });
  99.             
  100.             tree.MidTravel();
  101.         }
  102.     }
  103. }

转载于:https://www.cnblogs.com/AlonaLiu/archive/2008/11/24/1340105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值