zoukankan      html  css  js  c++  java
  • 数据结构之二叉树

    二叉树的实现:

    public class Node<T>
        {
            T date;
    
            public T Date
            {
                get { return date; }
                set { date = value; }
            }
            Node<T> lChild;
    
            public Node<T> LChild
            {
                get { return lChild; }
                set { lChild = value; }
            }
            Node<T> rChild;
    
            public Node<T> RChild
            {
                get { return rChild; }
                set { rChild = value; }
            }
    
            public Node(T value)
            {
                date = value;
                lChild = null;
                rChild = null;
            }
    
            public Node()
            {
                date = default(T);
                lChild = null;
                rChild = null;
            }
    
            public Node(Node<T> lc, Node<T> rc)
            {
                date = default(T);
                lChild = lc;
                rChild = rc;
            }
        }
    
        public class BinaryTree<T>
        {
            Node<T> head;
    
            public Node<T> Head
            {
                get { return head; }
                set { head = value; }
            }
    
            public BinaryTree()
            {
                head = null;
            }
    
            public bool IsEmpty()
            {
                if (head == null)
                {
                    return true;
                }
                else
                {
                  return  false;
                }
            }
    
            public Node<T> GetLeftChild(Node<T> p)
            {
                if (p != null)
                {
                    return p.LChild;
                }
                else
                {
                    return null;
                }
            }
    
            public Node<T> GetRightChild(Node<T> p)
            {
                if (p != null)
                {
                    return p.RChild;
                }
                else
                {
                    return null;
                }
            }
    
            public BinaryTree(T value)
            {
                Node<T> root = new Node<T>(value);
                head = root;
            }
    
            public void InsertL(T value, Node<T> p)
            {
                Node<T> newNode = new Node<T>(value);
                newNode.LChild = p.LChild;
                p.LChild = newNode;
            }
    
            public void InsertR(T value, Node<T> p)
            {
                Node<T> newNode = new Node<T>(value);
                newNode.RChild = p.RChild;
                p.RChild = newNode;
            }
    
            public Node<T> DeleteLeftChild(Node<T> p)
            {
                if (p == null)
                {
                    return null;
                }
    
                Node<T> temp = null;
                if (p != null && p.LChild != null) 
                {
                    temp = p.LChild;
                }
    
                p.LChild = null;
                return temp;
            }
    
            public Node<T> DeleteRightChild(Node<T> p)
            {
                if (p == null)
                {
                    return null;
                }
    
                Node<T> temp = null;
                if (p != null && p.RChild != null)
                {
                    temp = p.RChild;
                }
    
                p.RChild = null;
                return temp;
            }
    
            public bool IsLeftNode(Node<T> p)
            {
                if (p != null &&
                    p.LChild == null
                    && p.RChild == null)
                {
                    return true;
                }
    
                return false;
            }
        }
  • 相关阅读:
    react学习总结(一)
    jQuery的attr()与prop()的区别
    Vue.js学习(常用指令)
    Node.js学习(篇章一)
    CSS3关于-webkit-tap-highlight-color属性
    position布局影响点击事件以及冒泡获取事件目标
    取消事件默认行为(移动端)
    rem与px之间的换算(移动端)
    Node.js(初识)
    ES6(变量的解构赋值)
  • 原文地址:https://www.cnblogs.com/Jessy/p/3491882.html
Copyright © 2011-2022 走看看