美文网首页
leetcode 待完善

leetcode 待完善

作者: 野蛮生长_ed2e | 来源:发表于2019-07-28 14:08 被阅读0次

一、树

1.判断是否是对称二叉树

// 前序遍历
var isSymmetric = function(root) {
    if (!root) {
        return true;
    }
    var Symmetric = function(p, q) {
        if (p == null && q != null) {
            return false;
        }
        if (p != null && q == null) {
            return false;
        }
        if (p == null && q == null) {
            return true;
        }
        if (p.val != q.val) {
            return false;
        }
        return Symmetric(p.left, q.right) && Symmetric(p.right, q.left);
    };
    return Symmetric(root.left, root.right);
};

2.序列化与反序列化二叉树

// 在重建二叉树时,当遇到特殊符号当空节点进行处理
var a = {
  val: 1,
  left: {val: 2},
  right: {val: 3, left: {val: 4}, right: {val: 5}}
}
function Serialize(pRoot,arr =[]){
if(!pRoot)

{  arr.push('#');} 
else
{
 arr.push(pRoot.val);
 Serialize(pRoot.left,arr);
 Serialize(pRoot.right,arr)
}   
return arr.join(',');
}
Serialize(a); //  1,2,#,#,3,4,#,#,5,#,#
function Deserialize(s)
 {
   if(!s){return null;}
   return deserialize(s.split(','));
}

function deserialize(arr)
{
  let node = null;
  const current = arr.shift();
  if(current !=='#')
    {
      node ={ val:current }

        node.left =deserialize(arr);

        node.right = deserialize(arr);
    
    }

      
return node;
}
Deserialize('1,2,#,#,3,4,#,#,5,#,#'); // 
反序列化结果

3.广度优先遍历二叉树(递归版)

var result = []
var queue = [nodes]
var bfs = function(count) {
  count = count || 0
  if(queue[count]) {
    result.push(queue[count].node)
    var left = queue[count].left
    var right = queue[count].right
    if(left) {
      queue.push(left)
    }
    if(right) {
      queue.push(right)
    }
    bfs(++count)
  }
}
bfs()
console.log(result)

4.入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

function FindPath(root, expectNumber){
  var temp = [];
  var result = [];
  dfs(root, 0);
  return result;
  function dfs(root, sum){
  if(!root){
      return;
    }
    temp.push(root.val);
    sum += root.val;
    if(!root.left && !root.right && sum === expectNumber){
      result.push(temp.concat());
    }
    if(root.left){
      dfs(root.left, sum);
    }
    if(root.right){
      dfs(root.right, sum);
    }
    temp.pop();
    return;
   }-

5.实现一个函数,传3个参数,指定数组(有小数、正负数),n(取出个数),sum(指定和),输出是否能找到这几个数。

这和经典的凑硬币问题其实本质上是相同的,可以用动态规划来做,但这里我们先考虑用深度搜索来做。

function findGroup(arr,n,sum){
    if(sum == 0 && n == 0){
        return true;
    }else if(n <= 0){
        return false;
    }
    if(n > 0)
        for(var i = 0; i < arr.length; i++){
            var temp = arr.slice(i+1,arr.length);
            return findGroup(temp,n-1,sum-arr[i]) || findGroup(temp,n,sum);
        }
}

二、排序

时间复杂度

三、查找

本身就是有顺序的可以考虑通过二分查找的方式来降低检索次数O( logn)

相关文章

  • leetcode 待完善

    一、树 1.判断是否是对称二叉树 2.序列化与反序列化二叉树 3.广度优先遍历二叉树(递归版) 4.入一颗二叉树和...

  • 待完善

    有一直老母鸡,当她还是小鸡的时候,无忧无虑的,然后她长大了,发现小时候一起玩儿的禽类有的上了天,有的下了水,有的长...

  • 待完善

    两个人最好的状态,好像就是我在闹他在笑。以前特别不理解,随着我们两个的相处,我越发的感觉这样的状态,特别的舒服,我...

  • 数据结构-系列文章

    线性表 单链表 单链表-OC实现 双链表 循环链表 栈 栈 队列 待完善 数组 待完善 树 待完善 图 待完善 哈...

  • 牧牛,与马斯洛需求层次理论

    一、马斯洛五需求层次理论 第一层:待完善 第二层:待完善 第三层:待完善 第四层:待完善 第五层:待完善 二、牧牛...

  • 目录(待完善)

    饮食: 1.三大能量元素 2.热量计算 健身: 1.有氧运动 2.无氧运动 3.自重训练 4.减肥方法

  • SimpleRPC待完善

    common: provider: server: client:

  • Kotlin 快速入门

    待完善

  • 动态规划算法介绍

    待完善

  • 贪心算法介绍

    待完善

网友评论

      本文标题:leetcode 待完善

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