二叉树——114. 二叉树展开为链表
二叉树——114. 二叉树展开为链表
题目:

思路:
还是老思路:对结点操作是啥,遍历顺序是什么。
首先遍历顺序很明显是后序,因为我们需要先到最底层,开始我们的操作。
然后操作就是先左节点变为新的右节点,原来的右节点拼接到新的右节点下面,然后重复就行了。
代码:
class Solution {
public:
void flatten(TreeNode* root) {
if(root == nullptr) return;
/**开始后序遍历**/
flatten(root->left); // 左
flatten(root->right); // 右
// 设置二个树节点暂存左子树和右子树
TreeNode* left = root->left;
TreeNode* right = root->right;
// 将左子树当做右子树
root->left = NULL;
root->right = left;
// 将原来的右子树拼接到到现在的右子树下面
TreeNode* p = root;
while(p->right != NULL){
p = p->right;
}
p->right = right;
}
};
Rank:

Tips:


浙公网安备 33010602011771号