首页 > 编程知识 正文

二叉树层序遍历递归,层次遍历二叉树算法

时间:2023-05-05 16:28:24 阅读:15148 作者:4588

遍历层序的结果要求第一层节点的值域存在于二维阵列的第一个向量中,第二层节点存在于第二个向量中。 依次继续。

创建二维数组作为最终输出结果,创建用于获取每个层接收的值域的队列,以及用于保存每个层接收的值域的vector对象levelval集合。 举个例子,有第一个3的节点进入队列。 此时,队列中的节点数size更新为一个。 从队列中检索size个节点,并将该值域传递给levelval。 如果该节点有左右孩子,请按顺序对左右孩子进行队列,从队列中删除节点3,然后将levelval插入二维数组ret中。 下一次循环直到队列变空,返回ret。

创建类解决方案{ public : vectorvectorintlevelorder (treenode * root )//二维数组vectorvectorint ret; //对于空树if (nullptr==root ) { return ret; q.push (根),用于创建队列队列队列队列treenode * q,而不是空树; //队列不是空的,表示其中有节点while (! q.empty () ) { size_t size=q.size; //队列中节点的数量vectorintlevelval (大小; for(size_tI=0; i size; I({Treenode*cur=q.front ); //从队列中选择节点levelval[i]=cur-val; if(cur-left ) q.push ) cur-left; (if ) cur-right ) q.push ) cur-right; (} q.pop ); }ret.push_back(levelval ); }返回ret; };

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。