題目描述:
給你二叉樹的根結點 root ,請你將它展開為一個單鏈表:
- 展開后的單鏈表應該同樣使用 TreeNode ,其中 right 子指標指向鏈表中下一個結點,而左子指標始終為 null ,
- 展開后的單鏈表應該與二叉樹 先序遍歷 順序相同,
示例:
輸入:root = [1,2,5,3,4,null,6]
輸出:[1,null,2,null,3,null,4,null,5,null,6]
輸入:root = []
輸出:[]
輸入:root = [0]
輸出:[0]
解題思路:
struct TreeNode * TreeArray[2000]; //結點陣列
int i;
void nodeToArray(struct TreeNode *root) //把先序遍歷的方法把結點存放到陣列中
{
if(root == NULL)
return;
TreeArray[i++] = root;
nodeToArray(root->left);
nodeToArray(root->right);
}
void flatten(struct TreeNode* root){
memset(TreeArray,NULL,sizeof(TreeArray)); //先將陣列中的值全部賦為NULL
i=0;
nodeToArray(root);
int j=0;
while(TreeArray[j] != NULL) //將陣列中的結點連接成單鏈表
{
TreeArray[j]->left = NULL;
TreeArray[j]->right = TreeArray[j+1];
j++;
}
return root;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296765.html
標籤:其他
上一篇:實時(三)
