LeetCode 114 medium
https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/
参考:公众号 labuladong
思考:
- 需要先将左右节点拉平
- 然后根节点的操作就是将左右节点对换
解题:
var flatten = function(root)
函数声明
因此,写出代码:
var flatten = function(root) {
if(root == null){
return root
}
// 1.拉平 左右子树
flatten(root.left)
flatten(root.right)
// 2.将左子树变为右子树
let left = root.left
let right = root.right
root.left = null
root.right = left
// 3. 将原先右子树 接到 变为了当前右子树的左子树后面
let temp = root // 这里之前写了root.right,不行,因为不能保证 root.right 存在。所以要从根节点遍历
while(temp.right){ //搞混了,这里退出的条件是 temp.right 为空,而 temp 本身不可以为空,不然下面的temp.right 中会提示 null 中没有 right 这个属性
temp = temp.right
}
temp.right = right
return root
};
主要是注意一些代码逻辑上的细节