日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 116 --- 填充每个节点指向最右节点的next指针

發(fā)布時(shí)間:2024/7/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 116 --- 填充每个节点指向最右节点的next指针 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 題目

填充每個(gè)節(jié)點(diǎn)指向最右節(jié)點(diǎn)的next指針,?

填充所有節(jié)點(diǎn)的next指針,指向最接近它的同一層右邊節(jié)點(diǎn)。如果沒(méi)有同一層沒(méi)有右邊的節(jié)點(diǎn),則應(yīng)該將next指針設(shè)置為NULL。

初始時(shí),所有的next指針都為NULL

注意:

  • 你只能使用常量級(jí)的額外內(nèi)存空間
  • 可以假設(shè)給出的二叉樹(shù)是一個(gè)完美的二叉樹(shù)(即,所有葉子節(jié)點(diǎn)都位于同一層,而且每個(gè)父節(jié)點(diǎn)都有兩個(gè)孩子節(jié)點(diǎn))。

2 解法

因?yàn)榇祟}為按層來(lái)填充每一個(gè)節(jié)點(diǎn)的next為其同層的右節(jié)點(diǎn)(如果存在的話)

2.1 用隊(duì)列的方法

2.2 不用隊(duì)列

因?yàn)樾枰獙⒚恳粚佑胣ext指針鏈接好, 所以遍歷的思想是,鏈接好的一層遍歷的時(shí)候把其下一層鏈接好, 在每一層遍歷時(shí),因?yàn)橐溄悠湎乱粚拥母鱾€(gè)節(jié)點(diǎn),所以要用一個(gè)last指針將上一個(gè)被鏈接為next的節(jié)點(diǎn)標(biāo)記好,且要標(biāo)記好下一層的頭節(jié)點(diǎn),以便于上一層遍歷完遍歷下一層,所以有:

/*** Definition for binary tree with next pointer.* struct TreeLinkNode {* int val;* TreeLinkNode *left, *right, *next;* TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}* };*/ class Solution { public:void connect(TreeLinkNode *root) {TreeLinkNode *start(root);while (start) {TreeLinkNode *nextStart(NULL), *last(NULL);for (auto p = start; p != NULL; p = p->next) {if (p->left) {if (!nextStart)nextStart = p->left;if (last)last->next = p->left;last = p->left;}if (p->right) {if (!nextStart)nextStart = p->right;if (last)last->next = p->right;last = p->right;}}start = nextStart;}} };

總結(jié)

以上是生活随笔為你收集整理的leetcode 116 --- 填充每个节点指向最右节点的next指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。