博客
关于我
LeetCode114.二叉树展开为链表[后序遍历典例]
阅读量:791 次
发布时间:2023-01-31

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

这道题首先要思考,肯定要用遍历二叉树,但是要用哪个遍历呢

最好的方法应该是后序遍历,把根结点放在最后一步访问

自底而上的方式顺序来重建链表

记得将右子树备份,左子树置空;

将左子树赋值给右子树,找到右子树的最后一个结点,把原来的右子树重新接上去

这样可以避免最后结果右子树顺序颠倒的问题

/** * 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) {        if(root==NULL)            return;        //后序遍历        flatten(root->left);        flatten(root->right);        TreeNode* r = root->right;//将右子树备份        root->right = root->left;        root->left = NULL;//将左子树置空        while(root->right!=NULL)//找到右子树最后一个结点            root = root->right;        root->right = r;//把原来的右子树接上去    }};

 

转载地址:http://ymgyk.baihongyu.com/

你可能感兴趣的文章
LeetCode新手指南:从零开始掌握算法挑战
查看>>
LeetCode智加科技专场——第207场周赛题解
查看>>
leetcode正则表达式匹配
查看>>
leetcode第40题:组合总和II
查看>>
leetcode算法题解(Java版)-6-链表,字符串
查看>>
LeetCode经典——202.快慢指针之快乐数
查看>>
LeetCode经典——70.爬楼梯&&509.斐波拉契数列
查看>>
Leetcode经典系列——LRU最近最少使用机制
查看>>
LeetCode美团专场——第203场周赛题解
查看>>
LeetCode蔚来专场——第208场周赛题解
查看>>
leetcode题解-买卖股票的最佳时机
查看>>
leetcode题解102-二叉树的层序遍历
查看>>
leetcode题解102-翻转二叉树
查看>>
leetcode题解104- 二叉树的最大深度
查看>>
leetcode题解108-将有序数组转换为二叉排序树
查看>>
leetcode题解118-杨辉三角
查看>>
leetcode题解131-分割回文串
查看>>
leetcode题解136-只出现一次的数字
查看>>
leetcode题解14-最长公共前缀
查看>>
leetcode题解15-三数之和(双指针经典)
查看>>