本文共 1173 字,大约阅读时间需要 3 分钟。
链接:
题目:将原二叉搜索树进行调整,使得每个节点只有右子节点。
例如:
Example 1:Input: [5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9Output: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9] 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9
思路:
保存一个全局newroot指针,采用中序遍历的方法, 每次遍历时: newroot->right = root; root->left = NULL;newroot = root; (root为当前节点)代码:
class Solution {public: void In_Order(TreeNode *root){ if(!root) return; In_Order(root->left); if(!newroot) {//找到第一个节点 newroot = ret = root; } else { //后续节点调整 newroot->right = root; root->left = NULL; newroot = root; } In_Order(root->right); } TreeNode* increasingBST(TreeNode* root) { ret = newroot = NULL; In_Order(root); return ret; } private: TreeNode *newroot; TreeNode *ret;};
转载地址:http://mirai.baihongyu.com/