若樹為空,則空操作返回。否則,先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。(中 左 右)
實現(遞迴)
void preorder(node *node)
}
實現(非遞迴)
void preorder1(node *node)
std::stacknstack;
nstack.push(node);
while(!nstack.empty())
if(temp->left)}}
若樹為空,則空操作返回。否則,從根節點開始(注意並不是先訪問根節點),中序遍歷根節點的左子樹,然後是訪問根節點,最後中序遍歷根節點的右子樹。(m)型,(左 中 右)
實現(遞迴)
void inorder(node *node)
}
實現(非遞迴)
void inorder1(node *node)
else}}
若樹為空,則空操作返回。否則,從左到右先葉子後節點的方式遍歷訪問左右子樹,最後訪問根節點。(左右中)逆時針型 (左 右 中)
實現(遞迴)
void posorder(node *node)
}
實現(非遞迴)
void posorder1(node *node)
while(!nstack2.empty())
}
若樹為空,則空操作返回。否則,從樹的第一層,也就是根節點開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序結點逐個訪問。
實現
void levelorder(treenode *t)
}
void deeporder(treenode *t)
}
二叉樹的實現及遍歷
二叉樹是一種非常重要的資料結構,接下來看看如何用 來實現二叉樹,以及二叉樹的插入和遍歷。public class node public void add int s elseif int this value s 將s插入到本節點的左子樹 leftnode.add s else rightnode...
二叉樹及二叉樹的遍歷
二叉樹的定義 樹的度為2的樹。二叉樹的遞迴定義 二叉樹或者是一棵空樹,或者是一棵由乙個根結點和兩棵互不相交的左子樹和右子樹所組成的非空樹,而左右子樹又都是一棵二叉樹。1.第i層上至多有2的i 1次方個結點。2.深度為h的二叉樹至多有2的h次方減1個結點。3.每一層都滿的二叉樹稱為滿二叉樹,只在最後一...
二叉樹遍歷方式
先序遍歷 根 左子樹 右子樹 遞迴版本 public static void preprint treenode root 非遞迴版本 public static void preorder treenode root if s.empty 中序遍歷 左子樹 根 右子樹 遞迴版本 public st...