二叉树前序遍历法举例!急急急!!! 列举对应二叉树,急急急!!!
\u3010\u3010\u6c42\u3011\u3011\u4e8c\u53c9\u6811\u7684\u4e09\u79cd\u904d\u5386\u4e3e\u4f8b!!!\u524d\u5e8f\u904d\u5386:1 2 4 8 9 10 11 5 3 6 7 (\u89c4\u5f8b\uff1a\u6839\u5728\u524d\uff1b\u5b50\u6811\u5728\u6839\u540e\u4e14\u5de6\u5b50\u6811\u6bd4\u53f3\u5b50\u6811\u9760\u524d)\uff1b
\u4e2d\u5e8f\u904d\u5386:8 4 10 9 11 2 5 1 6 3 7 (\u89c4\u5f8b\uff1a\u6839\u5728\u4e2d\uff1b\u5de6\u5b50\u6811\u5728\u8ddf\u5de6\u8fb9\uff0c\u53f3\u5b50\u6811\u5728\u6839\u53f3\u8fb9)\uff1b
\u540e\u5e8f\u904d\u5386:8 10 11 9 4 5 2 6 7 3 1 (\u89c4\u5f8b\uff1a\u6839\u5728\u540e\uff1b\u5b50\u6811\u5728\u6839\u524d\u4e14\u5de6\u5b50\u6811\u6bd4\u53f3\u5b50\u6811\u9760\u524d)\uff1b
\u5176\u5b83\u4f8b\u5b50\uff1a
\u524d\u5e8f\u904d\u5386:ABDECFG
\u4e2d\u5e8f\u904d\u5386:DBEAFCG
\u540e\u5e8f\u904d\u5386:DEBFGCA
\u524d\u5e8f\u904d\u5386:1 2 4 3 5 7 6
\u4e2d\u5e8f\u904d\u5386:2 4 1 5 7 3 6
\u540e\u5e8f\u904d\u5386:4 2 7 5 6 3 1
\u505a\u7c7b\u4f3c\u7684\u9898\u76ee\uff0c\u4f60\u53ef\u4ee5\u5148\u7531\u4e24\u4e2a\u904d\u5386\u753b\u51fa\u4e8c\u53c9\u6811\u3002\u901a\u8fc7\u5f62\u8c61\u7684\u4e8c\u53c9\u6811\u6765\u5199\u51fa\u53e6\u4e00\u4e2a\u904d\u5386\uff0c\u5199\u7684\u65b9\u6cd5\u5982\u4e0a\uff08\u9012\u5f52\uff09\u3002\u753b\u51fa\u4e8c\u53c9\u6811\u7684\u65b9\u6cd5\u5982\u4e0b\uff1a
\u5df2\u77e5\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u524d\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\uff0c\u6784\u9020\u8be5\u4e8c\u53c9\u6811\u7684\u8fc7\u7a0b\u5982\u4e0b\uff1a
1. \u6839\u636e\u524d\u5e8f\u5e8f\u5217\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u5efa\u7acb\u6839\u7ed3\u70b9\uff1b
2. \u5728\u4e2d\u5e8f\u5e8f\u5217\u4e2d\u627e\u5230\u8be5\u5143\u7d20\uff0c\u786e\u5b9a\u6839\u7ed3\u70b9\u7684\u5de6\u53f3\u5b50\u6811\u7684\u4e2d\u5e8f\u5e8f\u5217\uff1b
3. \u5728\u524d\u5e8f\u5e8f\u5217\u4e2d\u786e\u5b9a\u5de6\u53f3\u5b50\u6811\u7684\u524d\u5e8f\u5e8f\u5217\uff1b
4. \u7531\u5de6\u5b50\u6811\u7684\u524d\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\u5efa\u7acb\u5de6\u5b50\u6811\uff1b
5. \u7531\u53f3\u5b50\u6811\u7684\u524d\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\u5efa\u7acb\u53f3\u5b50\u6811\u3002
\u5df2\u77e5\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u540e\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\uff0c\u6784\u9020\u8be5\u4e8c\u53c9\u6811\u7684\u8fc7\u7a0b\u5982\u4e0b\uff1a
1. \u6839\u636e\u540e\u5e8f\u5e8f\u5217\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u5efa\u7acb\u6839\u7ed3\u70b9\uff1b
2. \u5728\u4e2d\u5e8f\u5e8f\u5217\u4e2d\u627e\u5230\u8be5\u5143\u7d20\uff0c\u786e\u5b9a\u6839\u7ed3\u70b9\u7684\u5de6\u53f3\u5b50\u6811\u7684\u4e2d\u5e8f\u5e8f\u5217\uff1b
3. \u5728\u540e\u5e8f\u5e8f\u5217\u4e2d\u786e\u5b9a\u5de6\u53f3\u5b50\u6811\u7684\u540e\u5e8f\u5e8f\u5217\uff1b
4. \u7531\u5de6\u5b50\u6811\u7684\u540e\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\u5efa\u7acb\u5de6\u5b50\u6811\uff1b
5. \u7531\u53f3\u5b50\u6811\u7684\u540e\u5e8f\u5e8f\u5217\u548c\u4e2d\u5e8f\u5e8f\u5217\u5efa\u7acb\u53f3\u5b50\u6811\u3002
//\u5934\u6587\u4ef6
#ifndef _BINARYTREE_H_
#define _BINARYTREE_H_
#include"BinaryTreeNode.h"
#include
#include
using namespace std;
template
class BinaryTree
{
BinaryTreeNode* m_root;
protected:
BinaryTreeNode* Parent(BinaryTreeNode* root,BinaryTreeNode* p);
void Destroy(BinaryTreeNode* p);
public:
BinaryTree(){m_root=NULL;}
BinaryTree(T data){m_root=new BinaryTreeNode(data); }
virtual ~BinaryTree(void);
//\u5224\u65ad\u662f\u5426\u4e3a\u7a7a\u6811
bool IsEmpty()const{return m_root==NULL?true:false;}
//\u53d6\u5f97\u4e00\u4e2a\u7236\u8282\u70b9\u7684\u6307\u9488
BinaryTreeNode* GetParent(BinaryTreeNode* p){return Parent(m_root,p);}
//\u5224\u65ad\u662f\u5426\u4e3a\u5de6\u5b69\u5b50
bool IsLeftChild(BinaryTreeNode* p){return p==GetParent(p)->GetLeftChild()?true:false;}
//\u5224\u65ad\u662f\u5426\u4e3a\u53f3\u5b69\u5b50
bool IsRightChild(BinaryTreeNode* p){return p==GetParent(p)->GetRightChild()?true:false;}
//\u53d6\u5f97\u6574\u68f5\u6811\u7684\u6811\u6839
BinaryTreeNode* GetRoot(){return m_root;}
BinaryTreeNode* LeftChild(BinaryTreeNode* root)const
{return root==NULL?NULL:root->GetLeftChild();}
BinaryTreeNode* RightChild(BinaryTreeNode* root)const
{return root==NULL?NULL:root->GetRightChild();}
BinaryTreeNode* LeftSibling(BinaryTreeNode* leftChild);
BinaryTreeNode* RightSibling(BinaryTreeNode* rightChild);
//\u8fd4\u56de\u4e00\u4e2a\u7ed3\u70b9\u7684\u6570\u636e
T Retrieve(BinaryTreeNode* p)const {return p->GetData()};
//\u8bbe\u7f6e\u4e00\u4e2a\u7ed3\u70b9\u7684\u6570\u636e
void Assign(BinaryTreeNode* p,const T& d)const{p->SetData(d);}
void InsertRightChild(BinaryTreeNode* p,const T& d)const;
void InsertLeftChild(BinaryTreeNode* p,const T& d)const;
void DeleteRightChild(BinaryTreeNode* p){Destroy(p->GetRightChild());}
void DeleteLeftChild(BinaryTreeNode* p){Destroy(p->GetLeftChild());};
virtual void PreOrderTraverse(BinaryTreeNode* root)const; //\u5148\u5e8f\u904d\u5386\u6574\u68f5\u6811
virtual void InOrderTraverse(BinaryTreeNode* root)const; //\u4e2d\u5e8f\u904d\u5386\u6574\u68f5\u6811
virtual void PostOrderTraverse(BinaryTreeNode* root)const; //\u540e\u5e8f\u904d\u5386\u6574\u68f5\u6811
virtual void LevelOrderTraverse(BinaryTreeNode* root)const;//\u6309\u5c42\u904d\u5386\u6574\u68f5\u6811
};
template
BinaryTree::~BinaryTree(void)
{
Destroy(m_root);
m_root=NULL;
}
template
void BinaryTree::Destroy(BinaryTreeNode* p)
{
if(p!=NULL)
{
Destroy(p->GetLeftChild());
Destroy(p->GetRightChild());
delete p;
}
}
template
void BinaryTree::InsertLeftChild(BinaryTreeNode* p,const T& d)const
{
BinaryTreeNode* q=new BinaryTreeNode(d);
q->SetLeftChild(p->GetLeftChild());
p->SetLeftChild(q);
}
template
void BinaryTree::InsertRightChild(BinaryTreeNode* p,const T& d)const
{
BinaryTreeNode* q=new BinaryTreeNode(d);
q->SetRightChild(p->GetRightChild());
p->SetRightChild(q);
}
//\u5148\u5e8f\u904d\u5386\u7684\u9012\u5f52\u7b97\u6cd5
//template
//void BinaryTree::PreOrderTraverse(BinaryTreeNode* root)const
//{
//if(root!=NULL)
//{
//coutGetData();
//PreOrderTraverse(root->GetLeftChild());
//PreOrderTraverse(root->GetRightChild());
//}
//}
//\u5148\u5e8f\u904d\u5386\u7684\u6808\u7ed3\u6784\u7b97\u6cd5
template
void BinaryTree::PreOrderTraverse(BinaryTreeNode* root)const
{
stack*> s;
BinaryTreeNode* p=root;
while(!s.empty()||p!=NULL)
{
while(p)
{
s.push(p);
coutGetData();
p=p->GetLeftChild();
}
p=s.top();
s.pop();
p=p->GetRightChild();
}
}
//\u5148\u5e8f\u904d\u5386\u7684\u6808\u7ed3\u6784\u7b97\u6cd5
template
void BinaryTree::InOrderTraverse(BinaryTreeNode* root)const
{
stack*> s;
BinaryTreeNode* p=root;
while(!s.empty()||p!=NULL)
{
while(p)
{
s.push(p);
p=p->GetLeftChild();
}
p=s.top();
s.pop();
coutGetData();
p=p->GetRightChild();
}
}
////\u540e\u5e8f\u904d\u5386\u7684\u9012\u5f52\u7b97\u6cd5
//template
//void BinaryTree::PostOrderTraverse(BinaryTreeNode* root)const
//{
//if(root!=NULL)
//{
//PreOrderTraverse(root->GetLeftChild());
//PreOrderTraverse(root->GetRightChild());
//}
//coutGetData();
//}
//\u6309\u5c42\u904d\u5386\u6574\u68f5\u6811
template
void BinaryTree::LevelOrderTraverse(BinaryTreeNode* root)const
{
queue* > q;
if(root!=NULL)
{
q.push(root);
}
while(!q.empty())
{
root=q.front(),q.pop();
coutGetData();
if(root->GetLeftChild())
q.push(root->GetLeftChild());
if(root->GetRightChild())
q.push(root->GetRightChild());
}
}
//\u540e\u5e8f\u904d\u5386\u7684\u6808\u7ed3\u6784\u7b97\u6cd5
template
void BinaryTree::PostOrderTraverse(BinaryTreeNode* root)const
{
stack*> s;
BinaryTreeNode* p=root;
while(!s.empty()||p!=NULL)
{
while(p)
{
s.push(p);
p=p->GetLeftChild();
}
p=s.top();
//coutGetData();
s.pop();
p=p->GetRightChild();
}
}
#endif
//-------------------------------------
//----\u4e3b\u7a0b\u5e8f
#include
#include"BinaryTreeNode.h"
#include"BinaryTree.h"
using namespace std;
void main()
{
BinaryTree myBinTree('A');
myBinTree.InsertLeftChild(myBinTree.GetRoot(),'B');
myBinTree.InsertRightChild(myBinTree.GetRoot(),'C');
myBinTree.InsertLeftChild(myBinTree.GetRoot()->GetLeftChild(),'D');
myBinTree.InsertRightChild(myBinTree.GetRoot()->GetLeftChild(),'E');
myBinTree.InsertLeftChild(myBinTree.GetRoot()->GetRightChild(),'F');
myBinTree.InsertRightChild(myBinTree.GetRoot()->GetRightChild(),'G');
myBinTree.PreOrderTraverse(myBinTree.GetRoot());
cout<<endl;
myBinTree.InOrderTraverse(myBinTree.GetRoot());
cout<<endl;
myBinTree.PostOrderTraverse(myBinTree.GetRoot());
cout<<endl;
myBinTree.LevelOrderTraverse(myBinTree.GetRoot());
cout<<endl;
system("pause");
}
二叉树的三种金典遍历法
1.前序遍历法:
前序遍历(DLR)
前序遍历(DLR)
前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
若二叉树为空则结束返回,否则:
(1)访问根结点
(2)前序遍历左子树
(3)前序遍历右子树
注意的是:遍历左右子树时仍然采用前序遍历方法。
如上图所示二叉树
前序遍历,也叫先根遍历,遍历的顺序是,根,左子树,右子树
遍历结果:ABDECF
中序遍历,也叫中根遍历,顺序是 左子树,根,右子树
遍历结果:DBEAFC
后序遍历,也叫后根遍历,遍历顺序,左子树,右子树,根
遍历结果:DEBFCA
2.中序遍历法:
中序遍历
中序遍历(LDR)
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,再访问根结点,最后遍历右子树。即:
若二叉树为空则结束返回,否则:
(1)中序遍历左子树
(2)访问根结点
(3)中序遍历右子树。
注意的是:遍历左右子树时仍然采用中序遍历方法。
3.后序遍历法:
后序遍历
简介
后序遍历是二叉树遍历的一种。后序遍历指在访问根结点、遍历左子树与遍历右子树三者中,首先遍历左子树,然后遍历右子树,最后遍历访问根结点,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后遍历根结点。后序遍历有递归算法和非递归算法两种。
递归算法
算法描述:
(1)若二叉树为空,结束
(2)后序遍历左子树
(3)后序遍历右子树
(4)访问根结点
伪代码
PROCEDURE POSTRAV(BT)
IF BT<>0 THEN
{
POSTRAV(L(BT))
POSTRAV(R(BT))
OUTPUT V(BT)
}
RETURN
c语言描述
struct btnode
{
int d;
struct btnode *lchild;
struct btnode *rchild;
};
void postrav(struct btnode *bt)
{
if(bt!=NULL)
{
postrav(bt->lchild);
postrav(bt->rchild);
printf("%d ",bt->d);
}
}
非递归算法
算法1(c语言描述):
void postrav1(struct btnode *bt)
{
struct btnode *p;
struct
{
struct btnode *pt;
int tag;
}st[MaxSize];
}
int top=-1;
top++;
st[top].pt=bt;
st[top].tag=1;
while(top>-1) /*栈不为空*/
{
if(st[top].tag==1) /*不能直接访问的情况*/
{
p=st[top].pt;
top--;
if(p!=NULL)
{
top++; /*根结点*/
st[top].pt=p;
st[top].tag=0;
top++; /*右孩子结点*/
st[top].pt=p->p->rchild;
st[top].tag=1;
top++; /*左孩子结点*/
st[top].pt=p->lchild;
st[top].tag=1;
}
}
if(st[top].tag==0) /*直接访问的情况*/
{
printf("%d ",st[top].pt->d);
top--;
}
}
}
算法2:
void postrav2(struct btnode *bt)
{
struct btnode *st[MaxSize],*p;
int flag,top=-1;
if(bt!=NULL)
{
do
{
while(bt!=NULL)
{
top++;
st[top]=bt;
bt=bt->lchild;
}
p=NULL;
flag=1;
while(top!=-1 && flag)
{
bt=st[top];
if(bt->rchild==p)
{
printf("%d ",bt->d);
top--;
p=bt;
}
else
{
bt=bt->rchild;
flag=0;
}
}
}while(top!=-1)
printf("
");
}
}
老曹回答 必属佳作 记得给分 谢谢合作!
绛旓細涓嶇煡閬撲綘璇寸殑鏄粈涔堣寰嬨傘備笉杩囦笉璁烘槸鍝閬嶅巻浜屽弶鏍锛岄兘鏄浉瀵逛簬鏍圭粨鐐规潵璇寸殑銆備緥濡傦細鍓嶅簭閬嶅巻鍗充负-->鏍广佸乏瀛愭爲銆佸彸瀛愭爲 涓簭閬嶅巻鍗充负-->宸﹀瓙鏍戙佹牴銆佸彸瀛愭爲 鍚庡簭閬嶅巻鍗充负-->宸﹀瓙鏍戙佸彸瀛愭爲銆佹牴
绛旓細搴忓簭鍒椾负 D B A E C F 锛 锛 鍏堝簭搴忓垪 鍏堝簭閬嶅巻浜屽弶鏍鏃 瀵圭粨鐐圭殑璁块棶娆″簭涓哄厛搴忓簭鍒椼愪緥銆戝厛搴忛亶鍘嗕笂鍥炬墍绀虹殑浜屽弶鏍戞椂 寰楀埌鐨勫厛搴忓簭鍒椾负 A B D C E F 锛 锛 鍚庡簭搴忓垪 鍚庡簭閬嶅巻浜屽弶鏍戞椂 瀵圭粨鐐圭殑璁块棶娆″簭涓哄悗搴忓簭鍒椼愪緥銆戝悗搴忛亶鍘嗕笂鍥炬墍绀虹殑浜屽弶鏍戞椂 寰楀埌鐨勫悗搴忓簭鍒椾负 ...
绛旓細鍓嶅簭閬嶅巻鐨勮鍒欏涓嬶細鑻浜屽弶鏍涓虹┖锛屽垯閫鍑恒傚惁鍒 鈶磋闂鐞嗘牴缁撶偣锛涒懙鍓嶅簭閬嶅巻宸﹀瓙鏍戯紱鈶跺墠搴忛亶鍘嗗彸瀛愭爲锛涚壒鐐癸細鐢卞乏鑰屽彸閫愭潯璁块棶鐢辨牴鍑哄彂鐨勬爲鏀 锛堝洖婧硶鐨勫熀纭锛変腑搴忛亶鍘嗙殑瑙勫垯锛氳嫢浜屽弶鏍戜负绌猴紝鍒欓鍑猴紱鍚﹀垯 鈶翠腑搴忛亶鍘嗗乏瀛愭爲锛涒懙璁块棶澶勭悊鏍圭粨鐐癸紱鈶朵腑搴忛亶鍘嗗彸瀛愭爲锛涘悗搴忛亶鍘嗙殑瑙勫垯濡備笅锛氳嫢...
绛旓細鍒欒浜屽弶鏍戠殑鍓嶅簭閬嶅巻搴忓垪涓篈BDECF锛屼腑搴忛亶鍘嗗簭鍒椾负DBEAFC锛屽悗搴忛亶鍘嗗簭鍒椾负DEBFCA銆鍏堝簭閬嶅巻浜屽弶鏍瑙勫垯锛氭牴-宸-鍙 1銆佽闂牴缁撶偣锛2銆佸厛搴忛亶鍘嗗乏瀛愭爲锛3銆佸厛搴忛亶鍘嗗彸瀛愭爲銆備腑搴忛亶鍘嗕簩鍙夋爲瑙勫垯锛氬乏-鏍-鍙 1銆佸厛涓簭閬嶅巻宸﹀瓙鏍戯紱2銆佸啀璁块棶鏍硅妭鐐癸紱3銆佹渶鍚庤闂腑搴忛亶鍘嗗彸瀛愭爲銆傚悗搴忛亶鍘嗕簩鍙夋爲瑙勫垯...
绛旓細浜屽弶鏍戝墠搴涓簭鍚庡簭鍙h瘈锛鍓嶅簭閬嶅巻:鏍硅妭鐐光-宸﹀瓙鏍戔-鍙冲瓙鏍戯紝涓簭閬嶅巻:宸﹀瓙鏍戔-鏍硅妭鐐光-鍙冲瓙鏍戯紝鍚庡簭閬嶅巻:宸﹀瓙鏍戔-鍙冲瓙鏍戔-鏍硅妭鐐 鍏堝簭锛氭槸浜屽弶鏍戦亶鍘嗕腑鐨勪竴绉嶏紝鍗冲厛璁块棶鏍圭粨鐐癸紝鐒跺悗閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲銆傞亶鍘嗗乏銆佸彸瀛愭爲鏃讹紝鍏堣闂牴缁撶偣锛屽悗閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲锛屽鏋滀簩鍙夋爲...
绛旓細鍏堝簭鍒楀彿涓鸿繖涓紝閭d箞鍦ㄧ紪杈戠殑鏃跺欙紝鍙互鍏堣繘琛岀敤椤哄簭鐨勬柟寮忥紝鐒跺悗鍐嶈繘琛屻傚悗搴忓簭鍒楁槸CBA銆傛牴鎹鍓嶅簭锛屽彲浠ョ‘瀹欰涓烘牴锛孉鍦ㄤ腑搴忎腑鐨勪綅缃紝鍙互纭畾CB涓篈鐨勫乏瀛愭爲涓婄殑缁撶偣锛屾病鏈夊彸瀛愭爲銆傜‘瀹欰涔嬪悗锛屽啀鐪嬩腑搴忕浜屽间负B锛屾煡鐪婤鍦ㄤ腑搴忎腑鐨勪綅缃紝C鍦˙宸﹁竟锛岀‘瀹欳涓築鐨勫乏瀛愭爲銆
绛旓細涓簭閬嶅巻涓篈BCD,鍓嶅簭閬嶅巻搴忓垪涓篊ABD 鍓嶅簭閬嶅巻鍏堣闂牴锛屾墍浠涓烘牴锛屽湪涓簭閬嶅巻涓厛璁块棶宸﹀瓙鏍戯紝鍐嶈闂牴锛屾渶鍚庤闂彸瀛愭爲锛屾墍浠ュ湪涓搴忓簭鍒椾腑锛孋鍓嶉潰鐨勪负宸﹀瓙鏍戯紝绗簩涓闂殑鏄乏瀛愭爲鐨勬牴A浠ユ绫绘帹鍙緱杩欐牱鐨勪竴妫浜屽弶鏍锛欳 / \ A D \ B 瀵硅繖妫典簩鍙夋爲鍚庡簭閬嶅巻鍙緱鍚庡簭搴忓垪涓築ADC ...
绛旓細浜屽弶鏍戠殑鍏堝簭锛屼腑搴忥紝鍚庡簭纭畾鐨勬柟娉曞涓嬶細1銆佹牴鎹悗搴忛亶鍘鐨勭壒鐐癸紝鎴戜滑鐭ラ亾鍚庡簭閬嶅巻鏈鍚庝竴涓粨鐐瑰嵆涓烘牴缁撶偣锛屽嵆鏍圭粨鐐逛负G銆2銆佽瀵熶腑搴忛亶鍘咥DEFGHMZ銆傚叾涓璻oot鑺傜偣G宸︿晶鐨凙DEF蹇呯劧鏄痳0ot鐨勫乏瀛愭爲锛孏鍙充晶鐨凥MZ蹇呯劧鏄痳oot鐨勫彸瀛愭爲銆3銆佽瀵熷乏瀛愭爲ADEF锛屽乏瀛愭爲鐨勪腑鐨勬牴鑺傜偣蹇呯劧鏄ぇ鏍戠殑root鐨刲eft...
绛旓細鍓嶅簭锛氭牴-宸-鍙 涓簭锛氬乏-鏍-鍙 鍚庡簭锛氬乏-鍙-鏍 涓句緥锛氬鏋鍓嶅簭閬嶅巻涓猴細ABDECFG,涓簭涓猴細DBEAFGC 閭d箞棣栧厛鍒ゆ柇A涓烘牴缁撶偣锛岀湅涓簭锛孉宸﹁竟鐨凞BE涓烘牴缁撶偣宸﹀瓙鏍戜笂鐨,FGC涓哄彸瀛愭爲涓婄殑銆傚張鍥犱负鍓嶅簭B锛岃鏄嶣涓哄乏瀛愭爲鐨勬牴缁撶偣銆傚悓鏍风殑閬撶悊锛屽厛缁樺嚭鏍戯紝鐒跺悗鎸夌収宸-鍙-鏍瑰啓鍑哄悗搴 ...
绛旓細涓簭锛氭槸浜屽弶鏍戦亶鍘涓殑涓绉嶏紝鍗鍏堥亶鍘宸﹀瓙鏍戯紝鍚庤闂牴缁撶偣锛岀劧鍚庨亶鍘嗗彸瀛愭爲銆傝嫢浜屽弶鏍戜负绌哄垯缁撴潫杩斿洖銆傚悗搴忥細鏄簩鍙夋爲閬嶅巻涓殑涓绉嶏紝鍗冲厛閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲锛岀劧鍚庤闂牴缁撶偣锛岄亶鍘嗗乏銆佸彸瀛愭爲鏃讹紝浠嶅厛閬嶅巻宸﹀瓙鏍戯紝鍚庨亶鍘嗗彸瀛愭爲锛屾渶鍚庨亶鍘嗘牴缁撶偣銆傚綋瀵逛竴妫垫暟瀛﹁〃杈惧紡鏍戣繘琛屼腑搴忥紝鍓嶅簭鍜屽悗搴...