Python算法系列—深度优先遍历算法

一、什么是深度优先遍历
深度优先遍历算法是经典的图论算法。从某个节点v出发开始进行搜索。不断搜索直到该节点所有的边都被遍历完,当节点v所有的边都被遍历完以后,深度优先遍历算法则需要回溯到v以前驱节点来继续搜索这个节点。
注意:深度优先遍历问题一定要按照规则尝试所有的可能才行。

二、二叉树

2.二叉树类型
二叉树类型:空二叉树、满二叉树、完全二叉树、完美二叉树、平衡二叉树。

空二叉树:有零个节点
完美二叉树:每一层节点都是满的二叉树(如1中举例的图)
满二叉树:每一个节点都有零个或者两个子节点
完全二叉树:出最后一层外,每一层节点都是满的,并且最后一层节点全部从左排列
平衡二叉树:每个节点的两个子树的深度相差不超过1.

注:国内对完美二叉树和满二叉树定义相同
3.二叉树相关术语
术语 解释
度 节点的度为节点的子树个数
叶子节点 度为零的节点
分支节点 度不为零的节点
孩子节点 节点下的两个子节点
双亲节点 节点上一层的源节点
兄弟节点 拥有同一双亲节点的节点
根 二叉树的源头节点
深度 二叉树中节点的层的数量

DLR(先序):
LDR(中序):
LRD(后序):
注意:L代表左子树R代表右子树;D代表根

6.深度优先遍历和广度优先遍历
深度优先遍历:前序、中序和后序都是深度优先遍历
从根节点出发直奔最远节点,
广度优先遍历:首先访问举例根节点最近的节点,按层次递进,以广度优先遍历上图的顺序为:1-2-3-4-5-6-7
三、面试题+励志
企鹅运维面试题:
1.二叉树遍历顺序:看上文
2.用你熟悉的语言说说怎么创建二叉树? python看上文

  • 鍙堟潵姹傚姪浜,澶х姹傝В绛 python绫荤户鎵跨殑闂
    绛旓細涓轰粈涔堥噰鐢–3绠楁硶鍛紵C3绠楁硶鏈鏃╄鎻愬嚭鏄敤浜嶭isp鐨勶紝搴旂敤鍦Python涓槸涓轰簡瑙e喅鍘熸潵鍩轰簬娣卞害浼樺厛鎼滅储绠楁硶涓嶆弧瓒虫湰鍦颁紭鍏堢骇锛屽拰鍗曡皟鎬х殑闂銆傛湰鍦颁紭鍏堢骇锛氭寚澹版槑鏃剁埗绫荤殑椤哄簭锛屾瘮濡侰(A,B)锛屽鏋滆闂瓹绫诲璞″睘鎬ф椂锛屽簲璇ユ牴鎹0鏄庨『搴忥紝浼樺厛鏌ユ壘A绫伙紝鐒跺悗鍐嶆煡鎵綛绫汇傚崟璋冩э細濡傛灉鍦–鐨勮В鏋愰『搴忎腑锛孉鎺掑湪B...
  • python澶氱户鎵垮簲璇ヨ娉ㄦ剰浠涔
    绛旓細Python鐢ㄧ殑鏂规硶鏄疢RO(method resolution order,鏂规硶瑙f瀽椤哄簭) 銆傚湪鍦≒ython2.3涔嬪墠锛孧RO鐨勫疄鐜版槸鍩轰簬DFS鐨勶紝鑰屽湪Python2.3浠ュ悗MRO鐨勫疄鐜版槸鍩轰簬C3绠楁硶銆傛壘鍒扮殑璧勬枡瑙i噴浜嗕竴涓嬫洿鎹㈢畻娉曠殑鍘熷洜:涓轰粈涔堥噰鐢–3绠楁硶 C3绠楁硶鏈鏃╄鎻愬嚭鏄敤浜嶭isp鐨勶紝搴旂敤鍦≒ython涓槸涓轰簡瑙e喅鍘熸潵鍩轰簬娣卞害浼樺厛鎼滅储绠楁硶涓嶆弧瓒虫湰鍦颁紭鍏...
  • 鐢Python鐖櫕寮鍙戣璁″嚭浠涔?
    绛旓細4. 鑷姩鍖栨祴璇曪細浣跨敤Python鐖櫕鍙互妯℃嫙鐢ㄦ埛鐨勬搷浣滐紝鑷姩鍖栧湴杩涜缃戠珯鐨勫姛鑳芥祴璇曞拰鎬ц兘娴嬭瘯锛屾彁楂樻祴璇曟晥鐜囥5. 鑸嗘儏鐩戞帶锛氶氳繃Python鐖櫕鍙互瀹炴椂鐩戞祴绀句氦濯掍綋銆佹柊闂荤綉绔欑瓑鐨勪俊鎭紝甯姪鐢ㄦ埛浜嗚В鍏紬瀵规煇涓瘽棰樼殑鎬佸害鍜屾儏鎰熷惧悜銆6. 鏈哄櫒瀛︿範锛歅ython鐖櫕鍙互鐢ㄤ簬鏁版嵁鐨勯噰闆嗗拰棰勫鐞嗭紝涓烘満鍣ㄥ涔绠楁硶鎻愪緵璁粌鏁版嵁...
  • Python涓缁ф壙鐨勭悊瑙?
    绛旓細9.5.1. 澶氱户鎵 Python 鍚屾牱鏈夐檺鐨勬敮鎸佸缁ф壙褰㈠紡銆傚缁ф壙鐨勭被瀹氫箟褰㈠涓嬩緥:class DerivedClassName(Base1, Base2, Base3):鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝鍦ㄦ渶绠鍗曠殑鎯呭喌涓嬶紝浣犺兘鎯冲埌鐨勬悳绱㈠睘鎬т粠鐖剁被缁ф壙鐨娣卞害浼樺厛锛屽乏鍒板彸锛岃屼笉鏄悳绱袱娆″湪鍚屼竴涓被灞傛缁撴瀯涓紝鍏朵腑鏈変竴涓噸鍙犮傚洜姝わ紝濡傛灉鍦 DerivedClassName...
  • 姹備竴涓python鐨涓夊弶鏍绠楁硶
    绛旓細姹備竴涓python鐨涓夊弶鏍绠楁硶  鎴戞潵绛 1涓洖绛 #鐑# 鑱屽満涓婂彈濮斿眻瑕佷笉瑕佷负鑷繁瑙i噴?鏃呮槬鍐琓J 2015-04-05 路 TA鑾峰緱瓒呰繃1061涓禐 鐭ラ亾澶ф湁鍙...# modified by qcq in 2014/4/23 澧炲姞浜嗛亶鍘嗘爲鐨勯潪閫掑綊鐗堟湰鐨勫箍搴︿紭鍏堝拰娣卞害浼樺厛#--#===# Contents#---# class...
  • Python涓璶etworkx涓璼hortest_path浣跨敤鐨勬槸鍝竴绉嶆渶鐭矾寰勬柟娉
    绛旓細涓嶅叏鏄備緷鎹紶鍏ョ殑鍙傛暟鍐冲畾璋冪敤鍝绠楁硶銆傜湅婧愮爜锛氳嚦灏戞秹鍙婁簡dijkstra銆佸箍搴︿紭鍏/娣卞害浼樺厛绠楁硶銆俰f source is None: if target is None: ## Find paths between all pairs. if weight is None: paths=nx.all_pairs_shortest_path(G) else: paths=nx.all_pairs_dijkstra_path...
  • 涓轰粈涔堢敤Python鍋氭暟鎹垎鏋
    绛旓細濡傛灉浣跨敤Python锛岃兘澶熷ぇ澶х殑鎻愰珮鏁版嵁鍒嗘瀽鐨勬晥鐜囥3銆python搴撲竴鐩村湪澧炲姞锛绠楁硶鐨勫疄鐜伴噰鍙栫殑鏂规硶鏇村姞鍒涙柊 4銆乸ython鑳藉緢鏂逛究鐨勫鎺ュ叾浠栬瑷锛屾瘮濡俢銆乯ava绛夈侾ython鏈澶х殑浼樼偣閭e氨鏄畝鍗曟槗瀛︺侾ython浠g爜鍗佸垎瀹规槗琚鍐欙紝鏈閫傚悎鍒氬垰鍏ラ棬鐨勬湅鍙嬪幓瀛︿範銆傛垜浠湪澶勭悊鏁版嵁鐨勬椂鍊欙紝涓鑸兘甯屾湜鏁版嵁鑳藉杞寲鎴愬彲杩愮畻鐨...
  • 涓轰粈涔圝ava绫诲彧鑳界户鎵夸竴涓埗绫
    绛旓細===绗竴閮ㄥ垎锛Python鏄敮鎸佸閲嶇户鎵跨殑锛屼絾涓轰簡瑙e喅澶氶噸缁ф壙鐨勬柟娉曟煡鎵鹃『搴忛棶棰橈紙琚О涓篗RO锛夛紝鏈変竴鍦鸿嫤闅惧彶锛1. 浼犵粺妯″紡鐩存帴浣跨敤娣卞害浼樺厛绠楁硶锛堝苟涓旓紝浠庡乏鍚戝彸锛夛紝姣忎釜绫婚夋嫨鍏剁涓娆″嚭鐜扮殑浣嶇疆銆傛瘮濡俢lass A:def save(self): pass class B(A): pass class C:def save(self): pass class D(...
  • 2021骞翠綘璇讳簡鍝簺瑙夊緱姣旇緝濂界殑璁$畻鏈轰功绫?
    绛旓細绗8绔犱粙缁嶅瓧绗︿覆鍖归厤绠楁硶,鍖呮嫭BF绠楁硶銆丷K绠楁硶銆丅M绠楁硶銆並MP绠楁硶銆乀rie鏍戝拰AC鑷姩鏈恒傜9绔犱粙缁嶅浘鍙婄浉鍏崇畻娉,鍖呮嫭娣卞害浼樺厛鎼滅储銆佸箍搴︿紭鍏堟悳绱佹嫇鎵戞帓搴忋丏ijkstra绠楁硶銆丗loyd绠楁硶銆丄*绠楁硶銆乑灏忕敓鎴愭爲绠楁硶銆乑澶ф祦绠楁硶鍜孼澶т簩鍒嗗尮閰嶇瓑銆傜10绔犱粙缁4绉嶇畻娉曟濇兂,鍖呮嫭璐績銆佸垎娌汇佸洖婧拰鍔ㄦ佽鍒掋傜11绔犱粙缁4涓粡鍏...
  • python涓轰粈涔堝仛鏁版嵁鍒嗘瀽濂
    绛旓細鑰屼笖鍦ㄧ埇铏紝web锛岃繍缁寸敋鑷虫父鎴忕瓑棰嗗煙涔熷彂鎸ョ潃闈炲父閲嶈鐨勪綔鐢ㄣ傚叕鍙稿彧闇涓椤规妧鏈嵆鍙畬鎴愭墍鏈夋湇鍔★紝杩欐湁鍒╀簬涓氬姟鏁村悎骞跺彲浠ユ彁楂樺伐浣滄晥鐜囥傗懀Python鏄汉宸ユ櫤鑳界殑棣栭夌紪绋嬭瑷銆傚湪浜哄伐鏅鸿兘鏃朵唬锛孭ython宸叉垚涓烘渶鍙楁杩庣殑缂栫▼璇█銆傚緱鐩婁簬Python璇硶绠娲侊紝涓板瘜鐨勫簱鍜岀ぞ鍖猴紝澶у鏁娣卞害瀛︿範妗嗘灦閮浼樺厛鏀寔Python璇█銆
  • 扩展阅读:python基础代码大全 ... python深度神经网络算法 ... python制作成绩表 ... python加减乘除运算代码 ... python练习题及答案 ... python步长为3 隔几个 ... python入门教程 非常详细 ... python官网 ... python十种算法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网