C++中二叉树的前序(后序、中序)遍历分别是什么意思?相应的树图怎么看? C++中如果知道了二叉树的前序和中序遍历,怎么知道后序遍历?...
C++\u4e2d\u5982\u679c\u77e5\u9053\u4e86\u4e8c\u53c9\u6811\u7684\u524d\u5e8f\u548c\u4e2d\u5e8f\u904d\u5386\uff0c\u600e\u4e48\u77e5\u9053\u540e\u5e8f\u904d\u5386\uff1f\u6709\u70b9\u6025~\u77e5\u9053\u524d\u5e8f\u904d\u5386\u5c31\u76f8\u5f53\u4e8e\u77e5\u9053\u4e86\u8fd9\u68f5\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9\uff08\u7b2c\u4e00\u4e2a\u8282\u70b9\u4fbf\u662f\uff09
\u800c\u77e5\u9053\u4e2d\u5e8f\u904d\u5386
\u53c8
\u77e5\u9053\u8fd9\u68f5\u6811\u7684\u6839\u8282\u70b9
\u5c31\u80fd\u77e5\u9053
\u8fd9\u68f5\u6811\u7684\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u7684\u6240\u6709\u8282\u70b9\uff08\u5728\u4e2d\u5e8f\u904d\u5386\u4e2d\u627e\u51fa\u6839\u8282\u70b9\uff0c\u6839\u8282\u70b9\u5de6\u8fb9\u7684\u6240\u6709\u8282\u70b9\u662f\u5de6\u5b50\u6811\uff0c\u53f3\u8fb9\u7684\u6240\u6709\u8282\u70b9\u662f\u53f3\u5b50\u6811\uff09\u3002
\u518d\u5206\u522b\u628a\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u5f53\u505a\u4e00\u9897\u5b8c\u6574\u7684\u6811\uff0c\u6309\u7167\u524d\u9762\u7684\u6b65\u9aa4\u7ee7\u7eed\u5206\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u3002
\u7136\u540e\u5c31\u662f\u91cd\u590d\u4ee5\u4e0a\u52a8\u4f5c\u6765\u904d\u5386\u6574\u4e2a\u4e00\u68f5\u6811\uff08\u7528\u9012\u5f52\u6765\u505a\uff09\uff0c\u6bcf\u5f53\u8bbf\u95ee\u5b8c\u4e00\u4e2a\u5b50\u6811\u65f6\u5c31\u8f93\u51fa\u672c\u5b50\u6811\u7684\u6839\u8282\u70b9\uff08\u4e3a\u4e86\u540e\u5e8f\u904d\u5386\u2026\u2026\uff09\u3002
\u5230\u6700\u540e\u5206\u4e0d\u51fa\u6765\u65f6\uff08\u65e2\u67d0\u4e2a\u5b50\u6811\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff09\uff0c\u8fd9\u65f6\u5c31\u53ef\u4ee5\u8f93\u51fa\u672c\u8282\u70b9\uff0c\u5e76\u4e14\u8fd4\u56de\u3002
\u6bd4\u5982\uff1a\u524d\u5e8f\u904d\u5386\u662f\uff1aABCD\uff0c\u4e2d\u5e8f\u904d\u5386\u662f\uff1aBADC\u3002
\u9996\u5148\uff0c\u80fd\u6c42\u51fa\u6b64\u6811\u7684\u6839\u8282\u70b9\u662fA\uff0c\u5176\u6b21\u80fd\u77e5\u9053\u8fd9\u68f5\u6811\u7684\u5de6\u5b50\u6811\u7684\u4e2d\u5e8f\u904d\u5386\u662fB\u3002
\u6240\u4ee5\u8fd9\u68f5\u5b50\u6811\u7684\u524d\u5e8f\u904d\u5386\u662fB\u3002
\u56e0\u4e3a\u53ea\u6709\u4e00\u4e2a\u8282\u70b9
\u6240\u4ee5\u8f93\u51faB
\u518d\u6765\u770b\u770b\u8fd9\u68f5\u201c\u5927\u201d\u6811\u7684\u53f3\u5b50\u6811\uff0c\u53f3\u5b50\u6811\u7684\u4e2d\u5e8f\u904d\u5386\u662fDC\uff0c\u5bf9\u5e94\u5230\u524d\u5e8f\u904d\u5386\u5c31\u662fCD\uff0c\u6240\u4ee5\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u6839\u8282\u70b9\u5c31\u662fC\u3002
\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u5de6\u5b50\u6811\u5c31\u662fD\uff0c\u6ca1\u6709\u53f3\u5b50\u6811\u3002
\u6240\u4ee5\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u5de6\u5b50\u6811\u7684\u6839\u8282\u70b9\u4e5f\u5c31\u662fD
\u56e0\u4e3a\u8fd9\u8bfe\u5de6\u5b50\u6811\u7684\u8282\u70b9\u53ea\u6709D\uff0c\u6240\u4ee5\u8f93\u51faD\u3002
\u8fd4\u56de\u5230\u6574\u68f5\u6811\u7684\u53f3\u5b50\u6811\u90a3\u4e00\u5c42\uff0c\u53f3\u5b50\u6811\u7684\u6839\u8282\u70b9\u662fC\uff0c\u5b83\u7684\u5de6\u53f3\u5b50\u6811\u53c8\u90fd\u904d\u5386\u5b8c\u4e86\uff0c\u6240\u4ee5\u8f93\u51faC\u3002
\u6700\u540e\u9000\u56de\u5230\u6574\u68f5\u6811\u90a3\u4e00\u5c42\uff0c\u6574\u68f5\u6811\u7684\u6839\u8282\u70b9\u662fA\uff0c\u5de6\u53f3\u5b50\u6811\u53c8\u90fd\u904d\u5386\u5b8c\u4e86\u3002
\u6240\u4ee5\u8f93\u51faA\u3002
\u4e00\u5171\u8f93\u51fa\u4e86\uff1aBDCA\u3002
\u8fd9\u4fbf\u662f\u540e\u5e8f\u904d\u5386\u3002
\u77e5\u9053\u524d\u5e8f\u904d\u5386\u5c31\u76f8\u5f53\u4e8e\u77e5\u9053\u4e86\u8fd9\u68f5\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9\uff08\u7b2c\u4e00\u4e2a\u8282\u70b9\u4fbf\u662f\uff09
\u800c\u77e5\u9053\u4e2d\u5e8f\u904d\u5386 \u53c8 \u77e5\u9053\u8fd9\u68f5\u6811\u7684\u6839\u8282\u70b9 \u5c31\u80fd\u77e5\u9053 \u8fd9\u68f5\u6811\u7684\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u7684\u6240\u6709\u8282\u70b9\uff08\u5728\u4e2d\u5e8f\u904d\u5386\u4e2d\u627e\u51fa\u6839\u8282\u70b9\uff0c\u6839\u8282\u70b9\u5de6\u8fb9\u7684\u6240\u6709\u8282\u70b9\u662f\u5de6\u5b50\u6811\uff0c\u53f3\u8fb9\u7684\u6240\u6709\u8282\u70b9\u662f\u53f3\u5b50\u6811\uff09\u3002
\u518d\u5206\u522b\u628a\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u5f53\u505a\u4e00\u9897\u5b8c\u6574\u7684\u6811\uff0c\u6309\u7167\u524d\u9762\u7684\u6b65\u9aa4\u7ee7\u7eed\u5206\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u3002
\u7136\u540e\u5c31\u662f\u91cd\u590d\u4ee5\u4e0a\u52a8\u4f5c\u6765\u904d\u5386\u6574\u4e2a\u4e00\u68f5\u6811\uff08\u7528\u9012\u5f52\u6765\u505a\uff09\uff0c\u6bcf\u5f53\u8bbf\u95ee\u5b8c\u4e00\u4e2a\u5b50\u6811\u65f6\u5c31\u8f93\u51fa\u672c\u5b50\u6811\u7684\u6839\u8282\u70b9\uff08\u4e3a\u4e86\u540e\u5e8f\u904d\u5386\u2026\u2026\uff09\u3002
\u5230\u6700\u540e\u5206\u4e0d\u51fa\u6765\u65f6\uff08\u65e2\u67d0\u4e2a\u5b50\u6811\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff09\uff0c\u8fd9\u65f6\u5c31\u53ef\u4ee5\u8f93\u51fa\u672c\u8282\u70b9\uff0c\u5e76\u4e14\u8fd4\u56de\u3002
\u6bd4\u5982\uff1a\u524d\u5e8f\u904d\u5386\u662f\uff1aABCD\uff0c\u4e2d\u5e8f\u904d\u5386\u662f\uff1aBADC\u3002
\u9996\u5148\uff0c\u80fd\u6c42\u51fa\u6b64\u6811\u7684\u6839\u8282\u70b9\u662fA\uff0c\u5176\u6b21\u80fd\u77e5\u9053\u8fd9\u68f5\u6811\u7684\u5de6\u5b50\u6811\u7684\u4e2d\u5e8f\u904d\u5386\u662fB\u3002
\u6240\u4ee5\u8fd9\u68f5\u5b50\u6811\u7684\u524d\u5e8f\u904d\u5386\u662fB\u3002
\u56e0\u4e3a\u53ea\u6709\u4e00\u4e2a\u8282\u70b9
\u6240\u4ee5\u8f93\u51faB
\u518d\u6765\u770b\u770b\u8fd9\u68f5\u201c\u5927\u201d\u6811\u7684\u53f3\u5b50\u6811\uff0c\u53f3\u5b50\u6811\u7684\u4e2d\u5e8f\u904d\u5386\u662fDC\uff0c\u5bf9\u5e94\u5230\u524d\u5e8f\u904d\u5386\u5c31\u662fCD\uff0c\u6240\u4ee5\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u6839\u8282\u70b9\u5c31\u662fC\u3002
\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u5de6\u5b50\u6811\u5c31\u662fD\uff0c\u6ca1\u6709\u53f3\u5b50\u6811\u3002
\u6240\u4ee5\u8fd9\u68f5\u53f3\u5b50\u6811\u7684\u5de6\u5b50\u6811\u7684\u6839\u8282\u70b9\u4e5f\u5c31\u662fD
\u56e0\u4e3a\u8fd9\u8bfe\u5de6\u5b50\u6811\u7684\u8282\u70b9\u53ea\u6709D\uff0c\u6240\u4ee5\u8f93\u51faD\u3002
\u8fd4\u56de\u5230\u6574\u68f5\u6811\u7684\u53f3\u5b50\u6811\u90a3\u4e00\u5c42\uff0c\u53f3\u5b50\u6811\u7684\u6839\u8282\u70b9\u662fC\uff0c\u5b83\u7684\u5de6\u53f3\u5b50\u6811\u53c8\u90fd\u904d\u5386\u5b8c\u4e86\uff0c\u6240\u4ee5\u8f93\u51faC\u3002
\u6700\u540e\u9000\u56de\u5230\u6574\u68f5\u6811\u90a3\u4e00\u5c42\uff0c\u6574\u68f5\u6811\u7684\u6839\u8282\u70b9\u662fA\uff0c\u5de6\u53f3\u5b50\u6811\u53c8\u90fd\u904d\u5386\u5b8c\u4e86\u3002
\u6240\u4ee5\u8f93\u51faA\u3002
\u4e00\u5171\u8f93\u51fa\u4e86\uff1aBDCA\u3002
\u8fd9\u4fbf\u662f\u540e\u5e8f\u904d\u5386\u3002
二叉树的遍历是指按照一定次序访问树中所有结点,并且每个节点仅被访问一次的过程。
1、先序遍历(前序)
(1)访问根节点;
(2)先序遍历左子树;
(3)先序遍历右子树。
2、中序遍历
(1)中序遍历左子树;
(2)访问根节点;
(3)中序遍历右子树。
3、后序遍历
(1)后序遍历左子树;
(2)后序遍历右子树‘
(3)访问根节点。
记住访问根结点的时机就可以区分三种遍历方法了。
同时知道一棵二叉树的先序序列和中序序列,或者同时知道中序序列和后序序列,就能确定这棵二叉树的结构。构造算法相信你已经学习过,在任一本介绍数据结构的书上应该也有描述的。由于涉及到算法细节,这里就不细说了。
下面根据你例子中给出的序列来介绍确定二叉树结构的步骤:
(1)后序序列中最后一个为树的根节点,即c为二叉树的根结点;
(2)中序遍历中根节点把序列分为左右子树的中序遍历序列两个部分,在你的例子在右子树没有中序遍历序列(中序遍历序列中c右边没有序列),故可知二叉树的左子树的后序遍历序列为dabe,中序遍历序列为deba;
(3)应用(1)的方法,确定c的左子树的根结点为e,并把以e为根结点的子树的中序遍历序列划分为d(以e为根结点的左子树的中序遍历序列)和ba(以e为根结点的右子树的中序遍历序列)两个部分,后序遍历序列为dab;
(4)应用(1)的方法,可确定e的左结点为b;
(5)应用(1)的方法,可确定e的右结点为a;
(6)最后,可确定a无左结点,右结点为d。
构造的二叉树如图中所示。
那么可获得前序遍历序列为cedba
前序:根、左、右
后序:左、右、根
中序:左、根、右
绛旓細浜屽弶鏍鍓嶅簭涓簭鍚庡簭鍙h瘈锛氬墠搴忛亶鍘:鏍硅妭鐐光-宸﹀瓙鏍戔-鍙冲瓙鏍锛屼腑搴忛亶鍘:宸﹀瓙鏍戔-鏍硅妭鐐光-鍙冲瓙鏍戯紝鍚庡簭閬嶅巻:宸﹀瓙鏍戔-鍙冲瓙鏍戔-鏍硅妭鐐 鍏堝簭锛氭槸浜屽弶鏍戦亶鍘嗕腑鐨勪竴绉嶏紝鍗冲厛璁块棶鏍圭粨鐐癸紝鐒跺悗閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲銆傞亶鍘嗗乏銆佸彸瀛愭爲鏃讹紝鍏堣闂牴缁撶偣锛屽悗閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲锛屽鏋滀簩鍙夋爲...
绛旓細鍒欒浜屽弶鏍戠殑鍓嶅簭閬嶅巻搴忓垪涓篈BDECF锛屼腑搴忛亶鍘嗗簭鍒椾负DBEAFC锛鍚庡簭閬嶅巻搴忓垪涓篋EBFCA銆傚厛搴忛亶鍘嗕簩鍙夋爲瑙勫垯锛氭牴-宸-鍙 1銆佽闂牴缁撶偣锛2銆佸厛搴忛亶鍘嗗乏瀛愭爲锛3銆佸厛搴忛亶鍘嗗彸瀛愭爲銆備腑搴忛亶鍘嗕簩鍙夋爲瑙勫垯锛氬乏-鏍-鍙 1銆佸厛涓簭閬嶅巻宸﹀瓙鏍戯紱2銆佸啀璁块棶鏍硅妭鐐癸紱3銆佹渶鍚庤闂腑搴忛亶鍘嗗彸瀛愭爲銆傚悗搴忛亶鍘嗕簩鍙夋爲瑙勫垯...
绛旓細杩欓噷鎴戜滑鍙璁颁綇锛鍓嶅簭锛涓簭鍜屽悗搴鎸囩殑鏄牴鑺傜偣鐨勪綅缃嵆鍙紝鍗(鏍)鍓嶅簭锛(鏍)涓簭锛(鏍)鍚庡簭锛屾剰鎬濆氨鏄牴鑺傜偣鍦ㄦ牴鑺傜偣銆佸乏鑺傜偣锛屽彸鑺傜偣杩欎笁涓妭鐐规椂閬嶅巻鐨勯『搴忋(鏍瑰墠搴)鏍瑰乏鍙 (鏍逛腑搴)宸︽牴鍙 (鏍瑰悗搴)宸﹀彸鏍
绛旓細锛1锛鍚庡簭搴鍒椾腑鏈鍚庝竴涓负鏍戠殑鏍硅妭鐐癸紝鍗c涓浜屽弶鏍戠殑鏍圭粨鐐癸紱锛2锛変腑搴忛亶鍘嗕腑鏍硅妭鐐规妸搴忓垪鍒嗕负宸﹀彸瀛愭爲鐨勪腑搴忛亶鍘嗗簭鍒椾袱涓儴鍒嗭紝鍦ㄤ綘鐨勪緥瀛愬湪鍙冲瓙鏍戞病鏈変腑搴忛亶鍘嗗簭鍒楋紙涓簭閬嶅巻搴忓垪涓璫鍙宠竟娌℃湁搴忓垪锛夛紝鏁呭彲鐭ヤ簩鍙夋爲鐨勫乏瀛愭爲鐨勫悗搴忛亶鍘嗗簭鍒椾负dabe锛屼腑搴閬嶅巻搴忓垪涓篸eba锛涳紙3锛夊簲鐢紙1锛夌殑鏂规硶锛...
绛旓細鍓嶅簭閬嶅巻灏辨槸鍏堥亶鍘嗘牴鑺傜偣锛岀劧鍚庨亶鍘嗗乏鑺傜偣锛屾渶鍚庢槸鍙宠妭鐐癸紱涓簭閬嶅巻灏辨槸鍏堥亶鍘嗗乏鑺傜偣锛岀劧鍚庨亶鍘嗕腑闂寸殑鏍硅妭鐐癸紝鏈鍚庢槸鍙宠妭鐐癸紱鍚庡簭閬嶅巻灏辨槸鍏堥亶鍘嗗乏鑺傜偣锛岀劧鍚庨亶鍘嗘槸鍙宠妭鐐癸紝鏈鍚庢槸涓棿鐨勬牴鑺傜偣銆備簩鍙夋爲鐨勮繖涓夌閬嶅巻鏂规硶锛屾槸鎸夌収姣忛瀛愭爲鐨勬牴鑺傜偣椤哄簭閬嶅巻鐨勩
绛旓細2銆佽嫢鍦ㄥ乏鍙冲瓙鏍戠殑鍚庨潰琚闂彨鍋鍚庡簭锛鍏堕『搴忎负宸﹀彸鏍 3銆佺壒鐐逛负鍚庣画閬嶅巻鐨勭壒鐐规槸鎵ц鎿嶄綔鏃讹紝鑲畾宸茬粡閬嶅巻杩囪鑺傜偣鐨勫乏鍙冲瓙鑺傜偣锛屾晠閫傜敤浜庤杩涜鐮村潖鎬ф搷浣滅殑鎯呭喌锛屾瘮濡傚垹闄ゆ墍鏈夎妭鐐 浜屽弶鏍戞槸鏁版嵁缁撴瀯涓父琚棶鍒扮殑鐩稿叧鐭ヨ瘑鐐癸紝涔熸槸闇瑕佷簡瑙g殑涓涓煡璇嗙偣锛屽彲浠ユ荤粨涓涓浜屽弶鏍戠殑鍓嶅簭銆佷腑搴忋佸悗搴忛亶鍘嗙殑...
绛旓細浜屽弶鏍戝墠搴忎腑搴鍚庡簭 鍓嶅簭閬嶅巻 鍓嶅簭閬嶅巻鏄笁绉嶉亶鍘嗛『搴忎腑鏈绠鍗曠殑涓绉嶏紝鍥犱负鏍硅妭鐐规槸鏈鍏堣闂殑锛岃屾垜浠湪璁块棶涓涓鏍戠殑鏃跺欐渶鍏堥亣鍒扮殑灏辨槸鏍硅妭鐐广傞掑綊娉 閫掑綊鐨勬柟娉曞緢瀹规槗瀹炵幇锛屼篃寰堝鏄撶悊瑙o細鎴戜滑鍏堣闂牴鑺傜偣锛岀劧鍚庨掑綊璁块棶宸﹀瓙鏍戯紝鍐嶉掑綊璁块棶鍙冲瓙鏍戯紝鍗冲疄鐜颁簡鏍->宸->鍙崇殑璁块棶椤搴忥紝鍥犱负浣跨敤鐨...
绛旓細浜屽弶鏍戠殑鍓嶅簭涓簭鍚庡簭鐪嬫硶濡備笅锛氬厛搴忛亶鍘嗭紙鍏堟牴閬嶅巻锛夛細鍏堣闂牴鑺傜偣锛岀劧鍚庤闂乏瀛愭爲锛屾渶鍚庤闂彸瀛愭爲銆備緥濡傦紝瀵逛簬浜屽弶鏍1涓2涓3涓4涓5锛屽厛搴忛亶鍘嗙殑缁撴灉涓1涓2涓3涓4涓5銆備腑搴忛亶鍘嗭紙涓牴閬嶅巻锛夛細鍏堣闂乏瀛愭爲锛岀劧鍚庤闂牴鑺傜偣锛屾渶鍚庤闂彸瀛愭爲銆備緥濡傦紝瀵逛簬浜屽弶鏍1涓2涓3涓4涓5锛屼腑搴忛亶鍘嗙殑...
绛旓細姣斿姝e父鐨勪竴涓弧鑺傜偣锛孉鏄牴鑺傜偣銆丅鏄乏鑺傜偣銆C鏄彸鑺傜偣锛屽墠搴忛『搴忔槸ABC锛堟牴鑺傜偣鎺掓渶鍏堬紝鐒跺悗鍚岀骇鍏堝乏鍚庡彸锛夛紱涓簭椤哄簭鏄疊AC锛堝厛宸﹀悗鏍规渶鍚庡彸锛夛紱鍚庡簭椤哄簭鏄疊CA锛堝厛宸﹀悗鍙虫渶鍚庢牴锛夈浜屽弶鏍戝墠搴忎腑搴忓悗搴忕殑搴旂敤鐞嗗康 鍓嶅簭閬嶅巻锛氬浜庝竴涓浜屽弶鏍戯紝鍏堣闂牴鑺傜偣锛岀劧鍚庨掑綊鍦版寜鐓у墠搴忛亶鍘嗙殑鏂瑰紡璁块棶...
绛旓細鍏跺疄杩欎釜椤哄簭灏辨槸琛ㄧず鏍硅妭鐐规墍鍦ㄧ殑浣嶇疆锛屽乏瀛愭爲鍜屽彸瀛愭爲鐨勯『搴忔槸鍥哄畾鐨勶紝閮芥槸鍏堝乏鍚庡彸銆傛墍浠ユ牴缁撶偣涓庡乏鍙冲瓙鏍戠殑鍏崇郴灏辨瀯鎴愪簡涓夌椤哄簭锛1. 鑻ュ湪宸﹀彸瀛愭爲鐨勫墠闈琚闂彨鍋鍓嶅簭锛屽叾椤哄簭涓烘牴宸﹀彸 2. 鑻ュ湪宸﹀彸瀛愭爲鐨勪腑闂磋璁块棶鍙仛涓簭锛屽叾椤哄簭涓哄乏鏍瑰彸 3. 鑻ュ湪宸﹀彸瀛愭爲鐨勫悗闈㈣璁块棶鍙仛鍚庡簭锛鍏堕『搴忎负...