二叉树遍历

public class Node<T>
    {
        private T _data;
        private Node<T> _lNode;
        private Node<T> _rNode;
        private Node<T> _pNode;


        protected Node()
        {


        }


        public Node(T Data)
        {
            _data = Data;
        }


        protected T Data
        {
            get { return _data; }
            set { _data = value; }
        }


        protected Node<T> LNode
        {
            get { return _lNode; }
            set { _lNode = value; }
        }


        protected Node<T> RNode
        {
            get { return _rNode; }
            set { _rNode = value; }
        }


        protected Node<T> PNode
        {
            get { return _pNode; }
            set { _pNode = value; }
        }


        private static void SetNodeInfo(ref Node<T> node, Node<T> LNode, Node<T> RNode, Node<T> PNode)
        {
            node.LNode = LNode;
            node.RNode = RNode;
            node.PNode = PNode;
        }


        public void SetNodeLRP(Node<T> LNode, Node<T> RNode, Node<T> PNode)
        {
            this.LNode = LNode;
            this.RNode = RNode;
            this.PNode = PNode;
        }


        //先序遍历
        public static void FirstTravel(Node<T> node)
        {
            Node<T> root = FindRoot(node);
            RootFirst(root);
        }


        public static void RootFirst(Node<T> root)
        {
            if (root != null)
            {
                Debug.Write(root.Data+" ");
                RootFirst(root.LNode);
                RootFirst(root.RNode);
            }
        }


        private static Node<T>  FindRoot(Node<T> node)
        {
            while (node.PNode!=null)
            {
                node = node.PNode;
            }
            return node;
        }
    }
 调用的程序是
static void Main(string[] args)
        {
            Node<object> A=new Node<object>(1); //int
            Node<object> B = new Node<object>('2'); //char
            Node<object> C = new Node<object>("3"); //string
            Node<object> D = new Node<object>(4); //int
            Node<object> E = new Node<object>('5'); //char
            Node<object> F = new Node<object>("6"); //string
            Node<object> G = new Node<object>(7); //int
            Node<object> H = new Node<object>('8'); //char


            C.SetNodeLRP(null,null,B);
            D.SetNodeLRP(null,null,B);
            B.SetNodeLRP(C,D,A);


            F.SetNodeLRP(null,null,E);
            H.SetNodeLRP(null,null,G);
            G.SetNodeLRP(null,H,E);
            E.SetNodeLRP(F,G,A);


            A.SetNodeLRP(B,E,null);




            Node<object>.FirstTravel(B);
        }





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值