zoukankan      html  css  js  c++  java
  • LeetCode: Flatten Binary Tree to Linked List

    LeetCode: Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place.

    For example,
    Given

             1
            / 
           2   5
          /    
         3   4   6
    

    The flattened tree should look like:

       1
        
         2
          
           3
            
             4
              
               5
                
                 6
    
    地址:https://oj.leetcode.com/problems/flatten-binary-tree-to-linked-list/

    算法:题目要求按先序顺序把二叉树拉成一条链表。可以用递归解决,其中函数subFlatten表示用于解决以root为根的二叉树,并且返回结果链表的头尾节点。有了这个头尾节点,那么解决起来就比较简单了。代码:
     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     void flatten(TreeNode *root) {
    13         subFlatten(root);
    14     }
    15     pair<TreeNode *, TreeNode *> subFlatten(TreeNode *root){
    16         if(!root){
    17             TreeNode *temp = NULL;
    18             return make_pair(temp,temp);
    19         }
    20         TreeNode *left_p = root->left;
    21         TreeNode *right_p = root->right;
    22         root->left = root->right = NULL;
    23         TreeNode *firstNode = root;
    24         TreeNode *lastNode  = root;
    25         pair<TreeNode *, TreeNode *> first_last_pair = subFlatten(left_p);
    26         if(first_last_pair.first){
    27             lastNode->right = first_last_pair.first;
    28             lastNode = first_last_pair.second;
    29         }
    30         first_last_pair = subFlatten(right_p);
    31         if(first_last_pair.first){
    32             lastNode->right = first_last_pair.first;
    33             lastNode = first_last_pair.second;
    34         }
    35         return make_pair(firstNode,lastNode);
    36     }
    37 };
  • 相关阅读:
    CSS之链接
    CSS之文本
    CSS之定位
    django 第四天
    django第三天
    django 第二天
    django第一天
    国庆贺礼
    珂朵莉树(ODT)笔记
    20190927
  • 原文地址:https://www.cnblogs.com/boostable/p/leetcode_flatten_binary_tree_to_linked_list.html
Copyright © 2011-2022 走看看