中级农民
- 积分
- 100
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-4-10
- 最后登录
- 1970-1-1
|
麻烦各位大佬看看,verify一下:
- void freeTree( TreeNode*& root ) {
- while ( root != NULL ) {
- TreeNode* cur = root;
- TreeNode* parent = NULL;
- while ( cur->left != NULL ) {
- parent = cur;
- cur = cur->left;
- if ( cur->left == NULL ) {
- if ( cur->right != NULL ) {
- cur = cur->right;
- }
- }
- }
- if ( parent == NULL ) {
- TreeNode* tmp = root;
- root = root->right;
- delete tmp;
- continue;
- }
- if ( parent->left != NULL ) {
- parent->left = NULL;
- } else {
- parent->right = NULL;
- }
- delete cur;
- }
- }
- int main() {
- TreeNode* root = new TreeNode( -1 );
- TreeNode* a = new TreeNode( 0 );
- TreeNode* b = new TreeNode( 1 );
- TreeNode* c = new TreeNode( 2 );
- TreeNode* d = new TreeNode( 3 );
- TreeNode* e = new TreeNode( 4 );
- TreeNode* f = new TreeNode( 5 );
- root->left = a;
- root->right = b;
- a->left = c;
- a->right = d;
- b->left = e;
- b->right = f;
- freeTree( root );
- assert ( root == NULL );
- }
复制代码 |
|