二叉樹的三種遍歷(先序,中序,後序)

2021-08-18 14:28:57 字數 694 閱讀 5038

二叉樹的遍歷

1、遞迴形式的遍歷

1.1先序遍歷

先訪問父親節點,在訪問左葉子節點,在訪問右葉子節點,**如下:

void preorder(treenode root)

} 1.2中序遍歷

先訪問左葉子節點,在訪問父親節點,在訪問右孩子節點

void middleorder(treenode root)

} 1.3後序遍歷

先訪問左右葉子節點,在訪問父親節點

void postorder(treenode root)

} 2、非遞迴遍歷

2.1先序遍歷

void preorder2(treenode root)else

} }

2.2中序遍歷

void middleorder(treenode root)else

} }

2.3後序遍歷

思路:從根節點以次入棧,先入右孩子節點,再入左孩子節點,直到節點的左右孩子都沒有,再出棧。由於棧的特性,先進後出,先入右孩子可以保證先訪問左孩子,在訪問右孩子,在是父親節點。為了防止訪問再次進入訪問過的節點,每次記錄上次訪問的節點。

void postorder(treenode root)else

if(pnode->lchild!=null)

} }

}

二叉樹的先序 中序 後序三種遍歷

二叉樹遍歷根據節點順序來分有三種方式 先序遍歷 中序遍歷 後序遍歷。以上圖二叉樹為例,a是根節點,b是左節點,c是右節點。先序遍歷 abc 從根節點開始訪問,然後從左節點到右節點 中序遍歷 bac 從左節點開始,然後訪問根節點,最後訪問右節點 後序遍歷 bca 從左節點開始然後優先訪問同級的右節點最...

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...