• 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

    题目解答:

    这个题目是将一个二叉树变成一个通过右子节点链接的链表。可以发现的是,变化后右子树整体都在左子树的后面。所以可以先变头,再变左,再变右。我们需要把右子树给暂存起来。

    在处理完当前的根节点之后,把左子树链在右边,再接着依次处理它的右节点。

    代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        void flatten(TreeNode* root) {
            TreeNode *curNode = root;
            while(curNode != NULL)
            {
                TreeNode *pre = curNode -> left;
                TreeNode *tmp = curNode -> right;
                curNode -> left = NULL;
    
                if(pre != NULL)
                {
                    curNode -> right = pre;
                    while(pre -> right != NULL)
                    {
                        pre = pre -> right;
                    }
                    pre -> right = tmp;
                }
                curNode = curNode -> right;
            }
        }
    };
    

      

  • 相关阅读:
    工厂方法模式
    策略模式
    MySQL
    装饰模式
    里式代换原则
    依赖倒转原则
    Java 7 for Absolute Beginners/Java 7基础教程--读后感
    Java 7 for Absolute Beginners/Java 7基础教程--代码纠错
    Eclipse JVM terminated.exit code=13
    Java程序设计教程(第2版)阅读总结
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5549439.html
Copyright © 2020-2023  润新知