Given a binary tree, flatten it to a linked list in-place.
这题直观的做法就是先序遍历,一个节点一个节点的塞到list里面,但是为了避免毁掉原本的链接,所以在递归中使用临时变量存储节点
-
TreeNode * p=NULL;
-
void f(TreeNode * root){
-
if(root==NULL)
-
return;
-
p->right=root;
-
p=p->right;
-
TreeNode * l=root->left;
-
TreeNode * r=root->right;
-
root->left=NULL;
-
f(l);
-
f(r);
-
}
-
void flatten(TreeNode *root) {
-
p=new TreeNode(0);
-
f(root);
-
}
阅读(963) | 评论(0) | 转发(0) |