演算法題 二叉樹結點的中序遍歷的後繼結點

2022-09-01 15:15:16 字數 918 閱讀 8240

題目:給出二叉樹的乙個結點,返回它中序遍歷順序的下乙個結點。

思路

如果有指向父親的結點,則:

時間複雜度為樹的高度o(lgn)。

**: 

1

//有父結點指標

2struct

treenode3;

910 treenode *inordersuccessor(treenode *node)

1124}25

else

2633 node = successor; //

否則繼續上溯34}

35}3637

return

successor;

38 }

如果沒有指向父親結點的指標,則必須給定根節點;中序遍歷二叉樹,用棧來進行非遞迴遍歷;用cur_pop指向當前出棧的結點,prev指向上一出棧的結點;當prev_pop為輸入結點時,cur_pop即為所求的後繼結點。時間複雜度為o(n)。

**:

1

//沒有父結點指標

2struct

treenode3;

89 treenode *inordersuccessor(treenode *root, treenode *node) //

棧,中序遍歷,記錄出棧資訊

1027

else

2838}39

40if(prev_pop == node) //

如果有後繼

41return

cur_pop;

42else

43return

null;

44 }

演算法題 二叉樹的中序遍歷

題目描述 給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?解法一通過遞迴實現。時間複雜度 o n 空間複雜度 平均是o logn 樹的高度 最壞是o n 當樹退化成煉表時 definition fo...

演算法題 二叉樹的垂序遍歷

給你二叉樹的根結點 root 請你設計演算法計算二叉樹的 垂序遍歷 序列。對位於 row,col 的每個結點而言,其左右子結點分別位於 row 1,col 1 和 row 1,col 1 樹的根結點位於 0,0 二叉樹的 垂序遍歷 從最左邊的列開始直到最右邊的列結束,按列索引每一列上的所有結點,形成...

二叉樹的中序遍歷

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