[LeetCode][JavaScript]Populating Next Right Pointers in Each Node
2015-06-16 23:34
561 查看
Populating Next Right Pointers in Each Node
Given a binary treestruct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to
NULL.
Initially, all next pointers are set to
NULL.
Note:
You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
1 / \ 2 3 / \ / \ 4 5 6 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL
https://leetcode.com/problems/populating-next-right-pointers-in-each-node/
树的按层遍历,其实就是bfs。
维护一个队列放每一层的节点,在每一轮中,把这一层的节点按照顺序连起来。
因为是树的结构,访问过的节点不会再访问,不需要bfs的visited对象。
Populating Next Right Pointers in Each Node II同样的代码就能过,但是II要求不能用额外的空间。
/** * Definition for binary tree with next pointer. * function TreeLinkNode(val) { * this.val = val; * this.left = this.right = this.next = null; * } */ /** * @param {TreeLinkNode} root * @return {void} Do not return anything, modify tree in-place instead. */ var connect = function(root) { var queue = []; queue.push(root); bfs(); function bfs(){ if(queue.length > 0){ var top = null; var newQueue = []; var preNode = null; while(top = queue.shift()){ if(top.left){ newQueue.push(top.left); if(preNode){ preNode.next = top.left; } preNode = top.left; } if(top.right){ newQueue.push(top.right); if(preNode){ preNode.next = top.right; } preNode = top.right; } } if(preNode){ preNode.next = null; } queue = newQueue; bfs(); } } };
相关文章推荐
- Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解
- nodejs socket.io初探
- leetcode Count Complete Tree Nodes
- Count Complete Tree Nodes
- leetcode--CountCompleteTreeNodes
- 使用async解决nodejs异步问题
- Swap Nodes in Pairs
- [LeetCode] Count Complete Tree Nodes
- HDFS中的NameNode和DataNode
- Node.js Express 使用 在Mac电脑
- node js 安装 以及 nvm 使用 在mac 电脑
- Count Complete Tree Nodes
- 配置haoop,datanode启动不了解决方式
- C实现 LeetCode->RemoveNthNodeFromEndofList
- LeetCode OJ 之 Count Complete Tree Nodes(计算完全二叉树的结点数目)
- 基于NODEJS的前后端项目分离实践
- nodejs express route 的用法
- GrammarNode API
- GrammarNode API
- Reverse Nodes in k-Group