美文网首页
2018-06-05 学习笔记

2018-06-05 学习笔记

作者: 文小叨_9caa | 来源:发表于2018-06-08 19:14 被阅读0次

    算法-二叉树递归


    1.前序遍历

    public void preorder(TreeNode node){
             if(node == null){
                  return;
             }
             System.out.print(node.val);
             preorder(node.left);
             preorder(node.right);
    }
    

    2.是否包含键值key

    public boolean contain(TreeNode node,Key key){
      if(node  == null)
        return false;
      if(key == node.key)
        return true;
      if(contain(node.left,key)||contain(node.right,key))
        return true;
      return false;
    }
    

    3.释放二叉树

    public void destroy(TreeNode node){
      if(node == null)
        return;
      destroy(node.left);
      destroy(node.right);
      delete node;//不知道java咋delete的  
      count--;
    }
    

    LeeCode 104. Maximum Depth of Binary Tree

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null)
                return 0;
            return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
            
        }
    }
    

    LeeCode 111.Minimum Depth of Binary Tree

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int minDepth(TreeNode root) {
            if(root == null)
                return 0;
            int left =  minDepth(root.left);
            int right = minDepth(root.right);
            return (left == 0 || right == 0) ? left+right+1 : Math.min(right,left)+1;
            
        }
    }
    

    LeeCode 216.Invert Binary Tree

    class Solution {
        public TreeNode invertTree(TreeNode root) {
            if(root == null)
                return null;
            TreeNode left = invertTree(root.left);
            TreeNode right = invertTree(root.right);
            root.left = right;
            root.right = left;
            return root;
        }
    }
    

    LeeCode 100.Same Tree

    class Solution {
        public boolean isSameTree(TreeNode p, TreeNode q) {
            if(p == null && q == null){
                return true;
            }else if(p != null && q !=null){
               if(p.val != q.val){
                return false;
               }else{
                return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
               } 
            }else{
                return false;
            }
            
        }
    }
    

    LeeCode 101.Symmetric Tree

    class Solution {
        public boolean isSymmetric(TreeNode root) {
            if(root == null){
                return true;
            }
            TreeNode left = root.left;
            TreeNode right = reverse(root.right);
            return isSame(left,right);
            
        }
        
        public TreeNode reverse(TreeNode root){
            if(root == null){
                return null;
            }
            TreeNode left  = reverse(root.left);
            TreeNode right = reverse(root.right);
            root.left =right;
            root.right = left;
            return root;
        }
        
        public boolean isSame(TreeNode p,TreeNode q){
            if(p == null && q == null){
                return true;
            }else if(p != null && q !=null){
                if(p.val == q.val){
                    return isSame(p.left,q.left) && isSame(q.right,p.right);
                }else{
                    return false;
                }    
            }else{
                return false;
            }
        }
    }
    

    TCP/IP


    参考:https://toutiao.io/posts/3rdptu

    一、TCP/IP模型

    四层模型,链路层、网络层、传输层、应用层、层层封装

    二、数据链路层

    物理转换为0、1,MAC做唯一标识

    三、网络层

    IP协议

    IP不是可靠协议,网络范围,协议中TTL规定该数据包在穿过多少个路由之后才会被抛弃(每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。)

    ARP及RARP协议

    ARP 根据IP获取MAC地址、主机有自己的ARP高速缓存、查询键值对不存在,广播,符合条件主机回复,主机更新

    ICMP协议

    保证数据送达,原理(用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应)

    四、Traceroute

    侦测主机到目的主机之间所经路由情况,原理(它收到到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP。)

    五、TCP/UDP

    UDP

    面向报文(发送给IP层报文,不切分,必须选择合适大小的报文),适用通讯质量有要求的场景。

    TCP

    面向字节流(把报文当做一连串无结构的字节流,切分),适用网络通讯质量不高,要求通讯速度尽量快的场景。

    六、DNS

    域名和IP相互映射的分布式数据库、UDF,53端口

    七、TCP连接的建立与终止


    疑问

    1.java的delete node如何操作
    2.LeeCode 111.Minimum Depth of Binary Tre有疑问
    3.第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
    4.数据链路层特点:
    封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。
    透明传输:零比特填充、转义字符
    可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输
    差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。
    5.ping结果细节

    相关文章

      网友评论

          本文标题:2018-06-05 学习笔记

          本文链接:https://www.haomeiwen.com/subject/gxlvsftx.html