二叉樹中序遍歷

2021-09-28 15:50:29 字數 792 閱讀 2348

二叉樹中序遍歷

非遞迴版本的中序遍歷用棧來實現。

乙個元素出現在棧頂一次,這一次會被處理並出棧。trick:用乙個指標去記錄當前節點cur,如果cur->left左側還未遍歷,就會將cur入棧並訪問cur->left

一行很重要的**是cur = cur->right,這一句之後如果cur == null,則說明棧頂元素的左子樹訪問完了,應該訪問當前棧頂元素; 如果cur != null,則說明當前棧頂元素的左子節點的右子樹剛剛開始訪問,和cur==root時一樣迴圈這個過程即可。

/*

struct treenode

};*/

class

solution

p = s.

top();

s.pop();

pre-

>right = p;

p->left = pre;

pre = p;

p = p-

>right;

} treenode* trueroot = root-

>right;

delete root;

trueroot-

>left =

null

;return trueroot;}}

;

二叉樹中序遍歷

訪問根結點的的左子樹,訪問根結點和訪問根結點的右子樹依次記作 l,d r 中序遍歷 ldr 演算法 遍歷根結點的左子樹,訪問根結點 遍歷根結點的右子樹 對於上面的圖,我們假定只有a,b,c三個結點,則中序遍歷結果為 b a c 採用上節 二叉樹鏈式儲存和前序遍歷 中的遞迴推演 db a c d b ...

二叉樹先序遍歷和中序遍歷確定二叉樹

由於希望得到一顆二叉樹,所以返回值型別是乙個指向根節點的指標 表示得到了一顆二叉樹 btnode creatbt char pre,char int,int l1,int r1,int l2,int r2 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...

二叉樹的中序遍歷

對於學過資料結構的人來說,二叉樹和二叉樹上的中序遍歷都是再簡單不過的東西了。這道題就搞搞二叉樹好了,當然,不是一般的二叉樹 我們定義一種a二叉樹,它的節點內容可以是任乙個數字或者 只能作為葉子節點的內容。如下就是一棵合法定義的a二叉樹1 再來一棵不合法的a二叉樹2 根節點的左兒子的內容是 因此不應該...