Leetcode114. 二叉树展开为链表
题目:
给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1
/ \
2 5
/ \ \
3 4 6
将其展开为:
1
\
2
\
3
\
4
\
5
\
6
题解:
相当于二叉树的前序遍历
1
/ \
2 5
/ \ \
3 4 6
//将 1 的左子树插入到右子树的地方
1
\
2 5
/ \ \
3 4 6
//将原来的右子树接到左子树的最右边节点
1
\
2
/ \
3 4
\
5
\
6
//将 2 的左子树插入到右子树的地方
1
\
2
\
3 4
\
5
\
6
//将原来的右子树接到左子树的最右边节点
1
\
2
\
3
\
4
\
5
\
6
java代码:
/**
* 相当于二叉树的前序遍历
* @param root
*/
public static void flatten(TreeNode root) {
while (root!=null){
if(root.left==null){
root =root.right;
}else {
//找到左子树的最右侧节点
TreeNode pre = root.left;
while (pre.right!=null){
pre=pre.right;
}
//将原来的右子树接到左子树的最右边节点
pre.right =root.right;
// 将左子树插入到右子树的地方
root.right=root.left;
root.left=null;
// 考虑下一个节点
root =root.right;
}
}
}
本文详细解析了LeetCode114题“二叉树展开为链表”的解题思路,通过前序遍历的方式,原地将二叉树转换为单链表,提供了清晰的Java代码实现。
702

被折叠的 条评论
为什么被折叠?



