zoukankan      html  css  js  c++  java
  • 《剑指offer》JavaScript版16-18题

    16合并两个排序的链表

    题目

      输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    思路

      使用递归的方法,定义一个新链表head。如果 第一个链表pHead1的第一个值小于第二个链表表pHead2的第一个值,那么将pHead1.val放入head,继续比较后面的。否则将pHead2.val放入head,继续比较。

    代码

    function Merge(pHead1,pHead2){
        if(pHead1==null||pHead2==null){
            return pHead1||pHead2;
        }
        var head=null;//定义一个新的链表
        if(pHead1.val<pHead2.val){
            head=pHead1;
            head.next=Merge(pHead1.next,pHead2);
        }else{
            head=pHead2;
            head.next=Merge(pHead1,pHead2.next);
        }
        return head;
    }

    17树的子结构

    题目

      输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

    思路

    1.如果根节点相同则递归调用isSubtree(),如果根节点不相同,则判断root1的左子树和root2是否相同,再判断右子树和tree2是否相同;

    2.注意null的条件,HasSubTree中,如果两棵树都不为空才进行判断,isSubtree中,如果root2为空,则说明第二棵树遍历完了,即匹配成功;

    3.root1为空有两种情况:(1)如果root1为空&&root2不为空说明不匹配,(2)如果root1为空,root2为空,说明匹配。

    代码

    function isSubtree(root1,root2){
        if(root2==null)return true;
        if(root2==null)return false;
        if(root1.val==root2.val){
            return isSubtree(root1.left,root2.left)&&isSubtree(root1.right,root2.right);
        }else{
            return false;
        }
    }
    function hasSubtree(pRoot1,pRoot2){
        if(pRoot1==null||pRoot2==null){
            return false;
        }
        return isSubtree(pRoot1,pRoot2)||hasSubtree(pRoot1.left,pRoot2)||hasSubtree(pRoot1.right,pRoot2);
    }

    18二叉树的镜像

    题目

      操作给定的二叉树,将其变换为源二叉树的镜像。

    思路

      二叉树用到递归了,如果根节点在,将他的左孩子与右孩子交换,如此递归下去。

    代码

    function Mirror(root){
        if(root==null){
            return;
        }
        var temp=root.left;
        root.left=root.right;
        root.right=temp;
        if(root.left) Mirror(root.left);
        if(root.right)Mirror(root.right);
    }
  • 相关阅读:
    android灭屏后调用binder通讯竟然影响了socket的POLL_OUT事件,怪事。
    B0宏
    从surfaceflinger历史变更谈截屏
    arm下dlsym返回的符号地址居然不是偶对齐的。
    SIGCHLD waitpid, 小心子进程结束事件被偷了
    root权限后,不要忘了还有selinux
    shell命令管道未读完阻塞了子进程,与等待其结束的父进程死"锁"。
    我对BP网络的简单的理解
    python 中的字符串格式化
    阿里云深度学习采坑记
  • 原文地址:https://www.cnblogs.com/jiaxiaonuo/p/7446167.html
Copyright © 2011-2022 走看看