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

本文共 2389 字,大约阅读时间需要 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 };

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5012685.html,如需转载请自行联系原作者

你可能感兴趣的文章
2.客户端的挑战
查看>>
HTML中的一些知识点
查看>>
CrazyWing:Python自动化运维开发实战 八、Python数据类型之字符串
查看>>
java中文件名和类名之间的关系
查看>>
浅尝Windows Server 2016——Container 容器:部署
查看>>
如何自定义oauthauthorizationserverprovider错误信息?
查看>>
LINUX CP命令
查看>>
从 Java 档案(JAR) 中读取文件
查看>>
arguments转换为数组格式
查看>>
Linux如何实现镜像端口
查看>>
SCOM警报通知新特性:即时消息通知
查看>>
如何部署HTTPS 申请证书 安装证书
查看>>
重新定义“物联网” GreenPeak助力合作伙伴构建智能家居
查看>>
String类的学习
查看>>
linux正则表达式sed
查看>>
jenkins+docker的简单项目部署
查看>>
SQL 基础之去重和显示表结构(四)
查看>>
excel学习笔记之一
查看>>
selenium--字符串/整型问题Can't convert 'int' object to str implicitly提示解决方法
查看>>
linux内核的syslets补丁
查看>>