首页 > 其他分享 >无聊写了一个二叉排序

无聊写了一个二叉排序

时间:2024-08-02 13:28:01浏览次数:7  
标签:node 遍历 无聊 void Value 二叉 NoedSort 排序 public

        static void Main(string[] args)
        {
            var binarySortTree = new BinarySortTree();
            var testSortArray = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 100, 99, 88 };
            foreach (var item in testSortArray)
            {
                binarySortTree.Insert(item);
            }
            if (binarySortTree != null)
            {
                Console.WriteLine("前序遍历");
                binarySortTree.PreOrderTraversal();
                Console.WriteLine("中序遍历");
                binarySortTree.InOrderTraversal();
                Console.WriteLine("后序遍历");
                binarySortTree.PostOrderTraversal();
            }
        }
    public class NoedSort
    {
        /// <summary>
        /// 值
        /// </summary>
        public int Value
        {
            get;
            set;
        }

        /// <summary>
        /// 左跟
        /// </summary>
        public NoedSort Left
        {
            get;
            set;
        }

        /// <summary>
        ///右跟 
        /// </summary>
        public NoedSort Right
        {
            get;
            set;
        }

        /// <summary>
        /// 父类树
        /// </summary>
        public NoedSort ParentNode
        {
            get;
            set;
        }
    }



    /// <summary>
    /// 二叉排序
    /// </summary>
    public class BinarySortTree
    {
        private NoedSort node;

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="Value"></param>
        public void Insert(int Value)
        {
            node = Insert(node, null, Value);
        }

        private NoedSort Insert(NoedSort node, NoedSort parentNode, int value)
        {
            if (node == null)
            {
                return new NoedSort() { Value = value, ParentNode = parentNode };
            }
            if (node.Value > value)
            {
                node.Left = Insert(node.Left, node, value);
            }
            else
            {
                node.Right = Insert(node.Right, node, value);
            }
            return node;
        }

        /// <summary>
        /// 前序遍历
        /// </summary>
        public void PreOrderTraversal() 
        {
            PreOrderTraversal(node);
        }

        /// <summary>
        /// 前序遍历
        /// </summary>
        /// <param name="node"></param>
        private void PreOrderTraversal(NoedSort node)
        {
            if (node == null)
            {
                return;
            }
            Console.WriteLine(node.Value); // 访问根节点
            PreOrderTraversal(node.Left);  // 遍历左子树
            PreOrderTraversal(node.Right); // 遍历右子树
        }

        /// <summary>
        /// 中序遍历
        /// </summary>
        public void InOrderTraversal() 
        {
            InOrderTraversal(node);
        }

        /// <summary>
        /// 中序遍历
        /// </summary>
        /// <param name="node"></param>
        private void InOrderTraversal(NoedSort node)
        {
            if (node == null)
            {
                return;
            }

            InOrderTraversal(node.Left);   // 遍历左子树
            Console.WriteLine(node.Value); // 访问根节点
            InOrderTraversal(node.Right);  // 遍历右子树
        }


        /// <summary>
        /// 后序遍历
        /// </summary>
        public void PostOrderTraversal() 
        {
            PostOrderTraversal(node);
        }

        /// <summary>
        /// 后序遍历
        /// </summary>
        /// <param name="node"></param>
        public void PostOrderTraversal(NoedSort node)
        {
            if (node == null)
            {
                return;
            }
            PostOrderTraversal(node.Left);  // 遍历左子树
            PostOrderTraversal(node.Right); // 遍历右子树
            Console.WriteLine(node.Value);  // 访问根节点
        }
    }

  

 

 

标签:node,遍历,无聊,void,Value,二叉,NoedSort,排序,public
From: https://www.cnblogs.com/changeMe/p/18338538

相关文章

  • Day17 二叉树Part5
    目录任务654.最大二叉树思路617.合并二叉树思路700.二叉搜索树中的搜索思路98.验证二叉搜索树思路(错误)思路(正确)心得体会任务654.最大二叉树给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归......
  • 代码随想录day17 || 654 最大二叉树,617 合并二叉树,700 二叉搜索树搜索,98 验证二叉搜索
    645最大二叉树funcconstructMaximumBinaryTree(nums[]int)*TreeNode{ //思路,算法思路基本等同于通过中序前序构造二叉树 //1,取最大值作为根节点 //2,切割数组 //3,递归左右子树 iflen(nums)==0{ returnnil } //切割数组取最大值 max,left,right:=......
  • 数据结构:二叉树(链式结构)
    文章目录1.二叉树的链式结构2.二叉树的创建和实现相关功能2.1创建二叉树2.2二叉树的前,中,后序遍历2.2.1前序遍历2.2.2中序遍历2.2.3后序遍历2.3二叉树节点个数2.4二叉树叶子结点个数2.5二叉树第k层结点个数2.6二叉树的深度/高度2.7二叉树查找值为x的结点2.8......
  • 图解平衡二叉树
    平衡二叉树平衡二叉树的背景由于一些众所周知的原因,我们选择了平衡二叉树,好吧,其实就是因为对二叉搜索树的限制太少了,导致在一些特殊的情况下,二叉搜索树不太听话,查找,插入与删除的时间均变成了\(O(n)\)也可以认为,熵增就会更加有序,熵减就会更加自由,这里我们......
  • 数据结构实验----邻接表和拓扑排序
    一.实验目的1.理解拓扑排序的特性和算法;2.通过构造图的邻接表,掌握拓扑排序算法。二.实验内容1.建立邻接表存储的图;2.对图进行拓扑排序;3.输出拓扑排序序列。三.代码#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAXSIZE10#defineOK1#......
  • 【数据结构】排序
    目录1.前言2.排序的概念及引用2.1排序的概念2.2常见的排序算法 3.常见排序算法的实现3.1插入排序3.1.1基本思想 3.1.2直接插入排序 3.1.3希尔排序(缩小增量排序)3.2选择排序3.2.1基本思想3.2.2直接选择排序3.2.3堆排序3.3交换排序3.3.1基本思想3.3.2冒泡排......
  • DAY 15 二叉树part03
      110.平衡二叉树(优先掌握递归)题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 独立完成,感觉还比较好理解12classSolution{13public:14boolisBalanced(TreeNode*root){15if(......
  • 选择排序算法
    在Java中实现选择排序算法,首先需要理解其基本思想和步骤。选择排序是一种简单直观的排序算法,其核心思想是每次从未排序的数据元素中找到最小(或最大)的一个元素,并将其放到已排序序列的末尾。基本步骤初始化:设置一个未排序区间的起始位置为0。查找最小值:从当前未排序区间中找到......
  • 选择排序
    思想:选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。for(inti=0;i<length-1;......
  • 排序工具类 - SortUtils
    packagecom.kurumi.util;importorg.springframework.stereotype.Component;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjava.util.Map;publicclassSortUtils{/***将list安装sortMap中的传参排......