二叉树展开为链表
力扣链接:114. 二叉树展开为链表
题目描述
给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
示例
Java代码
//后序遍历
class Solution {
public void flatten(TreeNode root) {
if(root == null) return;
flatten(root.left);
flatten(root.right);
TreeNode temp = root.right;
root.right = root.left;
root.left = null;
while(root.right != null) root = root.right;
root.right = temp;
}
}
//走前序遍历的相反 每次将当前的结点插到链表开头
class Solution {
TreeNode h;
public void flatten(TreeNode root) {
dfs(root);
}
public void dfs(TreeNode root){
if(root==null)return;
dfs(root.right);
dfs(root.left);
root.right=h;
h=root;
root.left=null;
}
}
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flatten-binary-tree-to-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。