题目:
解答:
题思路:
先定义一个节点ans用来返回整棵树,定义另一个节点cur=ans,用来表示正在遍历的节点的上一个节点。
进行中序遍历,每遍历到一个节点时,就将它的左孩子设为NULL,然后将它身作为上一个节点的右孩子。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 TreeNode *ans = new TreeNode(0); 13 TreeNode *cur=ans; 14 15 void inOrder(TreeNode* node) 16 { 17 if(node==NULL) 18 { 19 return ; 20 } 21 22 inOrder(node->left); 23 node->left=NULL; //将该节点的左孩子设为NULL 24 cur->right=node; //将该节点赋给上一个节点的右孩子 25 cur=node; //更新cur 26 inOrder(node->right); 27 } 28 TreeNode* convertBiNode(TreeNode* root) 29 { 30 inOrder(root); 31 return ans->right; 32 } 33 };
原文:https://www.cnblogs.com/ocpc/p/12822287.html