zoukankan      html  css  js  c++  java
  • 二叉树 深度优先遍历

        /// <summary>
        
    /// 二叉树结点类
        
    /// </summary>
        public class BinaryTreeNode
        {
            object _data;
            BinaryTreeNode _left;
            BinaryTreeNode _right;
            
            public BinaryTreeNode Left
            {
                get
                {
                    return this._left;
                }
                set
                {
                    this._left = value;
                }
            }
            public BinaryTreeNode Right
            {
                get
                {
                    return this._right;
                }
                set
                {
                    this._right = value;
                }
            }
            
            public BinaryTreeNode(object data)
            {
                this._data = data;
            }
            
            public override string ToString()
            {
                return (null == _data)? string.Empty : _data.ToString();
            }
        }

        

         
        /// <summary> 

        /// 二叉树集合类
        
    ///</summary>publicclass BinaryTree
        {
            BinaryTreeNode _head;
            string _strBinaryTree;
            
            public BinaryTreeNode Head
            {
                get
                {
                    return this._head;
                }
            }
            void AddNode(BinaryTreeNode parent,int index)
            {
                int leftIndex = index * 2 + 1;
                if(leftIndex < _strBinaryTree.Length)
                {
                    if(_strBinaryTree[leftIndex] != '*')
                    {
                        parent.Left = new BinaryTreeNode(_strBinaryTree[leftIndex]);
                        AddNode(parent.Left,leftIndex);
                    }
                }
                int rightIndex = index * 2 + 2;
                if(rightIndex < _strBinaryTree.Length)
                {
                    if(_strBinaryTree[rightIndex] != '*')
                    {
                        parent.Right = new BinaryTreeNode(_strBinaryTree[rightIndex]);
                        AddNode(parent.Right,rightIndex);
                    }
                }
            }
            public void PerOrder(BinaryTreeNode node)
            {
                if(null != node)
                {
                    Console.Write(node);
                    PerOrder(node.Left);
                    PerOrder(node.Right);
                }
            }
            public void MidOrder(BinaryTreeNode node)
            {
                if(null != node)
                {
                    MidOrder(node.Left);
                    Console.Write(node);
                    MidOrder(node.Right);
                }
            }
            public void AfterOrder(BinaryTreeNode node)
            {
                if(null != node)
                {
                    AfterOrder(node.Left);
                    AfterOrder(node.Right);
                    Console.Write(node);
                }
            }
            public BinaryTree(string constructStr)
            {
                _strBinaryTree = constructStr;
                _head = (string.IsNullOrEmpty(_strBinaryTree)) ? null : new BinaryTreeNode(_strBinaryTree[0]);
                AddNode(_head, 0);
            }
        }

  • 相关阅读:
    JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(二)
    JWebFileTrans: 一款可以从网络上下载文件的小程序(一)
    Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
    Codeigniter框架前后台部署(多目录部署)
    ubuntu-server部署php+mysql运行环境
    成熟的标志就是生活越来越专注
    西门子PLC存储器、地址区
    VS快捷键
    SQL Server 连接字符串和身份验证 学习
    C#特性
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2778253.html
Copyright © 2011-2022 走看看