二叉樹的遍歷
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 ...