This article is for self education
Given the root of a binary tree, flatten the tree into a "linked list":
- The "linked list" should use the same
TreeNodeclass where therightchild pointer points to the next node in the list and theleftchild pointer is alwaysnull. - The "linked list" should be in the same order as a pre-order traversal of the binary tree.
Example 1:

Input: root = [1,2,5,3,4,null,6] Output: [1,null,2,null,3,null,4,null,5,null,6]
Example 2:
Input: root = [] Output: []
Example 3:
Input: root = [0] Output: [0]
Constraints:
- The number of nodes in the tree is in the range
[0, 2000]. -100 <= Node.val <= 100
//method 1 iterative
public void flatten(TreeNode root) {
if(root==null) return ;
TreeNode node=root;
while(node!=null){
if(node.left!=null){
TreeNode rightmost=node.left;
while(rightmost.right!=null){
rightmost=rightmost.right;
}
rightmost.right=node.right;
node.right=node.left;
node.left=null;
}
node=node.right;
}
}
refer:
https://leetcode.com/problems/flatten-binary-tree-to-linked-list/solution/
//method 2 : using likedlist and recursion
/* public void flatten(TreeNode root) {
LinkedList<TreeNode> list= new LinkedList<>();
preorder(list,root);
if(list.size()>1){
TreeNode head=list.get(0);
TreeNode temp=head;
for(int i=1; i<list.size(); i++){
TreeNode node=list.get(i);
temp.right=node;
temp.left=null;
temp=node;
}
}
}
private void preorder(List<TreeNode> list, TreeNode root){
if(root== null) return;
list.add(root);
preorder(list,root.left);
preorder(list,root.right);
}
*/
No comments:
Post a Comment