zoukankan      html  css  js  c++  java
  • JS二叉树的操作

    二叉树的构造

     1 // 二叉树的数据结构
     2 function treeNode(val) {
     3     this.val = val;
     4     this.left = null;
     5     this.right = null;
     6 }
     7 var nodeRoot = new treeNode("root");
     8 var nodeA = new treeNode('A');
     9 var nodeB = new treeNode('B');
    10 var nodeC = new treeNode('C');
    11 var nodeD = new treeNode('D');
    12 var nodeE = new treeNode('E');
    13 var nodeF = new treeNode('F');
    14 nodeA.left = nodeC;
    15 nodeA.right = nodeD;
    16 nodeB.left = nodeE;
    17 nodeB.right = nodeF;
    18 nodeRoot.left = nodeA;
    19 nodeRoot.right = nodeB;

    二叉树的遍历

    深度优先:

    1 function dFirstTravel(root) {
    2     if (root === null) {
    3         return;
    4     }
    5     console.log(root.val);
    6     dFirstTravel(root.left);
    7     dFirstTravel(root.right);
    8 }

    广度优先:

     1 function wFirstTravel(nodeRoot) {
     2     // 1初始化一个队列,并把根结点入列队;
     3 
     4     // 2当队列为非空时,循环执行步骤3到步骤5,否则执行6;
     5 
     6     // 3出队列取得一个结点,访问该结点;
     7 
     8     // 4若该结点的左子树为非空,则将该结点的左子树入队列;
     9 
    10     // 5若该结点的右子树为非空,则将该结点的右子树入队列;
    11 
    12     // 6结束。
    13     var queue = [];
    14     queue.push(nodeRoot);
    15     while (queue.length > 0) {
    16         var node = queue.shift();
    17         console.log(node.val);
    18         if (node.left !== null) {
    19             queue.push(node.left);
    20         }
    21         if (node.right !== null) {
    22             queue.push(node.right);
    23         }
    24     }
    25 }

    翻转二叉树

     1 function invertTree(root) {
     2     if (root === null) {
     3         return root;
     4     }
     5     var tmp = root.left;
     6     root.left = root.right;
     7     root.right = tmp;
     8     if (root.left !== null) {
     9         arguments.callee(root.left);
    10     }
    11     if (root.right !== null) {
    12         arguments.callee(root.right);
    13     }
    14     return root;
    15 }
  • 相关阅读:
    上传并压缩图片
    C#使用一般处理程序(ashx)中session
    cookie记住用户名密码
    操作数组
    鼠标滚轮事件兼容写法
    table嵌套table,jquery获取tr个数
    网站性能调优实战-学相伴KuangStudy
    为什么fdisk分区第一个分区以63或者2048扇区开始?
    oracle分组查询,获取组内所有信息(拼接显式)
    oracle中对象类型搜集(object type)
  • 原文地址:https://www.cnblogs.com/caiyanhu/p/7054338.html
Copyright © 2011-2022 走看看