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);
            }
        }

  • 相关阅读:
    python openpyxl 封装Execl常用操作的方法
    python webdriver grid多节点运行webdriver程序
    url的正则表达式
    基于Erlang VM的函数式编程语言Elixir
    [整理]团队开发效率提升探索一
    FreeBSD应该装gnome3做桌面
    FreeBSD pkg仓库有台湾的镜像了
    再探OAuth2
    【转】Android世界的Swift
    内存只有4G的MBP要怎么破
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2778253.html
Copyright © 2011-2022 走看看