博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode: Flatten Binary Tree to Linked List
阅读量:4659 次
发布时间:2019-06-09

本文共 2362 字,大约阅读时间需要 7 分钟。

C++

Traverse

1 /** 2  * Definition of TreeNode: 3  * class TreeNode { 4  * public: 5  *     int val; 6  *     TreeNode *left, *right; 7  *     TreeNode(int val) { 8  *         this->val = val; 9  *         this->left = this->right = NULL;10  *     }11  * }12  */13 class Solution {14 public:15     /**16      * @param root: a TreeNode, the root of the binary tree17      * @return: nothing18      */19     void flatten(TreeNode *root) {20         if(!root) return;21         vector
allNodes;22 preorder(root, allNodes);23 int n = allNodes.size();24 for(int i=0; i
left = NULL;26 allNodes[i]->right = allNodes[i+1];27 }28 allNodes[n-1]->left = allNodes[n-1]->right = NULL;29 }30 31 void preorder(TreeNode *root, vector
&allNodes) {32 if(!root) return;33 allNodes.push_back(root);34 preorder(root->left, allNodes);35 preorder(root->right, allNodes);36 }37 };

C++

Divide-Conquer

Recursive

1 /** 2  * Definition of TreeNode: 3  * class TreeNode { 4  * public: 5  *     int val; 6  *     TreeNode *left, *right; 7  *     TreeNode(int val) { 8  *         this->val = val; 9  *         this->left = this->right = NULL;10  *     }11  * }12  */13 class Solution {14 public:15     /**16      * @param root: a TreeNode, the root of the binary tree17      * @return: nothing18      */19     void flatten(TreeNode *root) {20         helper(root);21     }22     23     TreeNode* helper(TreeNode *root) {24         if (root == NULL) {25             return NULL;26         }27         if (root->left == NULL && root->right == NULL) {28             return root;29         }30         if (root->left == NULL) {31             return helper(root->right);32         }33         if (root->right == NULL) {34             root->right = root->left;35             root->left = NULL;//!important36             return helper(root->right);37         }38         //Divide39         TreeNode *leftLastNode = helper(root->left);40         TreeNode *rightLastNode = helper(root->right);41         42         //Conquer43         leftLastNode->right = root->right;44         root->right = root->left;45         root->left = NULL;//!important46         return rightLastNode;47     }48 };

 

转载于:https://www.cnblogs.com/CheeseZH/p/5012685.html

你可能感兴趣的文章
python学习目录
查看>>
关于always块内for循环的执行方式
查看>>
字符串,列表
查看>>
maven的相关命令
查看>>
原型、作用域、闭包的完整解释
查看>>
Solidworks如何导入和使用模板文件
查看>>
使用命令行 Subversion 访问项目源文件(SVN)
查看>>
Lua学习系列(四)
查看>>
Docker - CentOS 安装 Docker 和 Docker-Compose
查看>>
JVM常用参数
查看>>
开源协议
查看>>
第一个HTML文档
查看>>
一道面试题作为blog的开头
查看>>
Django Admin 本质
查看>>
搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型
查看>>
macd综合版
查看>>
二分法查找数据
查看>>
.post
查看>>
poj 1141(dp)
查看>>
poj 1364 King
查看>>