来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/flatten-binary-tree-to-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
解答
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val = (val===undefined ? 0 : val)* this.left = (left===undefined ? null : left)* this.right = (right===undefined ? null : right)* }*//*** @param {TreeNode} root* @return {void} Do not return anything, modify root in-place instead.*/const inorder = (node, nodes) => {if (!node) return;nodes.push(node);inorder(node.left, nodes);inorder(node.right, nodes);}var flatten = function(root) {let nodes = [];inorder(root, nodes);let pre;for (let node of nodes) {node.left = null;if (pre) {pre.right = node;}pre = node;}return root;};
