• C#实现二叉树数据结构


    代码
    // 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()
    {
    this.MidTravel(this.Root);
    }

    // 中序遍历(递归)
    public void MidTravel(Node node)
    {
    if (node.LeftSubNode != null)
    {
    this.MidTravel(node.LeftSubNode);
    }

    node.ShowData();

    if (node.RightSubNode != null)
    {
    this.MidTravel(node.RightSubNode);
    }
    }
    }

    class Program
    {
    static void Main(string[] args)
    {
    Tree tree
    = new Tree();

    tree.Insert(
    new Node { Data = 3 });
    tree.Insert(
    new Node { Data = 6 });
    tree.Insert(
    new Node { Data = 2 });
    tree.Insert(
    new Node { Data = 7 });
    tree.Insert(
    new Node { Data = 18 });
    tree.Insert(
    new Node { Data = 1 });
    tree.Insert(
    new Node { Data = 2 });
    tree.MidTravel();
    }
    }
  • 相关阅读:
    Github使用手册2——Github使用自己的远程仓库
    GitHub使用手册1——fork and pull request
    如何申请Pycharm学生免费激活码
    博客园入园手册2——Markdown编辑器1
    博客园入园手册1——TinyMEC编辑器
    实验一 GIT 代码版本管理
    结对项目-数独程序扩展(要求细化更新)
    个人作业Week2-代码复审(修改明确了要求)
    个人作业-Week1(新增详细说明)
    个人项目-数独
  • 原文地址:https://www.cnblogs.com/anyanran/p/binaryTree.html
Copyright © 2020-2023  润新知