Posted 瀛楄妭408鑰冪爺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相关的知识,希望对你有一定的参考价值。
馃挕 浠婃棩涔犻
缁欏畾涓€涓簩鍙夋爲锛屾牴鑺傜偣涓虹1灞傦紝娣卞害涓?1銆傚湪鍏剁 d 灞傝拷鍔犱竴琛屽€间负 v 鐨勮妭鐐广€?/p>
娣诲姞瑙勫垯锛氱粰瀹氫竴涓繁搴﹀€?d 锛堟鏁存暟锛夛紝閽堝娣卞害涓?d-1 灞傜殑姣忎竴闈炵┖鑺傜偣 N锛屼负 N 鍒涘缓涓や釜鍊间负 v 鐨勫乏瀛愭爲鍜屽彸瀛愭爲銆?/p>
灏?N 鍘熷厛鐨勫乏瀛愭爲锛岃繛鎺ヤ负鏂拌妭鐐?v 鐨勫乏瀛愭爲锛涘皢 N 鍘熷厛鐨勫彸瀛愭爲锛岃繛鎺ヤ负鏂拌妭鐐?v 鐨勫彸瀛愭爲銆?/p>
濡傛灉 d 鐨勫€间负 1锛屾繁搴?d - 1 涓嶅瓨鍦紝鍒欏垱寤轰竴涓柊鐨勬牴鑺傜偣 v锛屽師鍏堢殑鏁存5鏍戝皢浣滀负 v 鐨勫乏瀛愭爲銆?/p>
绀轰緥 1:
杈撳叆:
浜屽弶鏍戝涓嬫墍绀?
4
/
2 6
/ /
3 1 5
v = 1
d = 2
杈撳嚭:
4
/
1 1
/
2 6
/ /
3 1 5
鈥︹€︹彴 鎬濊€冩椂闂粹€︹€?/span>
濡傛灉浣犳兂濂界瓟妗堜簡
璇锋煡鐪嬭В棰樻€濊矾鍜屼唬鐮佸疄鐜?/span>
鈻?/span>
路瑙i鎬濊矾路
鍒╃敤BFS淇濆瓨d-1灞傜殑鑺傜偣
鐒跺悗瀵规瘡涓妭鐐圭殑宸﹀彸鑺傜偣杩涜淇敼
宸﹁妭鐐癸細鎸囧悜鏂板垱寤虹殑鑺傜偣锛屽叾鍊间负v锛屽叾宸﹁妭鐐逛负褰撳墠鑺傜偣鐨勫乏鑺傜偣
鍙宠妭鐐癸細鎸囧悜鏂板垱寤虹殑鑺傜偣锛屽叾鍊间负v锛屽叾鍙宠妭鐐逛负褰撳墠鑺傜偣鐨勫彸鑺傜偣
路浠g爜瀹炵幇路
TreeNode *addOneRow(TreeNode *root, int v, int d) {
//濡傛灉d涓?锛屽垯鍒涘缓涓€涓柊鐨勬牴鑺傜偣v锛屽師鍏堢殑鏁存5鏍戝皢浣滀负v鐨勫乏瀛愭爲
if (d == 1) {
return new TreeNode(v, root, nullptr);
}
queue<TreeNode *> q;
q.emplace(root);
//褰撳墠灞傛暟涓?nbsp;d-1 鏃讹紝鍋滄閬嶅巻
while (--d != 1) {
for (int i = 0, size = q.size(); i < size; ++i) {
TreeNode *node = q.front();
q.pop();
if (node->left) {
q.emplace(node->left);
}
if (node->right) {
q.emplace(node->right);
}
}
}
//闃熷垪涓墿涓嬬殑鑺傜偣鍗充负鑺傜偣N
while (!q.empty()) {
TreeNode *node = q.front();
q.pop();
//鍏堝垱寤轰竴涓妭鐐筆锛屽叾宸﹁妭鐐逛负褰撳墠鑺傜偣鐨勫乏鑺傜偣
//鐒跺悗灏嗗綋鍓嶈妭鐐圭殑宸﹁妭鐐硅缃负鑺傜偣P
node->left = new TreeNode(v, node->left, nullptr);
//鍏堝垱寤轰竴涓妭鐐筆锛屽叾鍙宠妭鐐逛负褰撳墠鑺傜偣鐨勫彸鑺傜偣
//鐒跺悗灏嗗綋鍓嶈妭鐐圭殑鍙宠妭鐐硅缃负鑺傜偣P
node->right = new TreeNode(v, nullptr, node->right);
}
return root;
}
寰俊鍏虫敞鈥?/span>瀛楄妭408鑰冪爺鈥濓紝
鍏嶈垂鑾峰彇鍚勯櫌鏍¤绠楁満杞欢鑰冪爺淇℃伅涓庝笓涓氳璧勬枡锛?/span>
以上是关于的主要内容,如果未能解决你的问题,请参考以下文章