栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 面试经验 > 面试问答

如何使用级别顺序遍历序列构造二叉树

面试问答 更新时间:发布时间: 百科书网 趣学号

假设使用

int[]data
具有基于0的索引的数组,我们有一个简单的函数来获取子级:

  • 左子
        int getLeftChild(int index){       if(index*2 + 1 >= data.length)          return -1;// -1 Means out of bound       return data[(index*2) + 1];    }
  • 合适的孩子
        int getRightChild(int index){       if(index*2 + 2 >= data.length)          return -1;// -1 Means out of bound       return data[(index*2) + 2];    }

编辑:好的,因此通过维护队列,我们​​可以构建此二叉树。

我们使用队列来维护尚未处理的节点。

使用变量计数来跟踪为当前节点添加的子代数。

首先,创建一个根节点,将其分配为当前节点。因此,从索引1开始(索引0为根),由于计数为0,我们将此节点添加为当前节点的左子节点。增加数量。如果此节点不是“#”,则将其添加到队列中。

移至下一个索引,计数为1,因此我们将其添加为当前节点的右子节点,将计数重置为0并更新当前节点(通过将当前节点分配为队列中的第一个元素)。如果此节点不是“#”,则将其添加到队列中。

         int count = 0;         Queue q = new Queue();         q.add(new Node(data[0]);         Node cur = null;         for(int i = 1; i < data.length; i++){ Node node = new Node(data[i]); if(count == 0){    cur = q.dequeue(); } if(count==0){   count++;   cur.leftChild = node; }else {   count = 0;   cur.rightChild = node; } if(data[i] != '#'){   q.enqueue(node); }         } class Node{int data;Node leftChild, rightChild;        } 


转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/418470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号